diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index c1792e8..c80d298 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -389,6 +389,45 @@ function _theme_save_registry($theme, $registry) {
 }
 
 /**
+ * Adds mobile friendly meta tags.
+ */
+function _theme_mobile_meta_tags() {
+  $elements = array(
+    'MobileOptimized' => array(
+      '#tag' => 'meta',
+      '#attributes' => array(
+        'name' => 'MobileOptimized',
+        'content' => 'width',
+      ),
+    ),
+    'HandheldFriendly' => array(
+      '#tag' => 'meta',
+      '#attributes' => array(
+        'name' => 'HandheldFriendly',
+        'content' => 'true',
+      ),
+    ),
+    'viewport' => array(
+      '#tag' => 'meta',
+      '#attributes' => array(
+        'name' => 'viewport',
+        'content' => 'width=device-width',
+      ),
+    ),
+    'cleartype' => array(
+      '#tag' => 'meta',
+      '#attributes' => array(
+        'http-equiv' => 'cleartype',
+        'content' => 'on',
+      ),
+    ),
+  );
+  foreach ($elements as $name => $element) {
+    drupal_add_html_head($element, $name);
+  }
+}
+
+/**
  * Forces the system to rebuild the theme registry.
  *
  * This function should be called when modules are added to the system, or when
@@ -2803,40 +2842,8 @@ function template_preprocess_html(&$variables) {
   $variables['head_title_array'] = $head_title;
   $variables['head_title'] = implode(' | ', $head_title);
 
-  // Display the html.tpl.php's default mobile metatags for responsive design.
-  $elements = array(
-    'MobileOptimized' => array(
-      '#tag' => 'meta',
-      '#attributes' => array(
-        'name' => 'MobileOptimized',
-        'content' => 'width',
-      ),
-    ),
-    'HandheldFriendly' => array(
-      '#tag' => 'meta',
-      '#attributes' => array(
-        'name' => 'HandheldFriendly',
-        'content' => 'true',
-      ),
-    ),
-    'viewport' => array(
-      '#tag' => 'meta',
-      '#attributes' => array(
-        'name' => 'viewport',
-        'content' => 'width=device-width',
-      ),
-    ),
-    'cleartype' => array(
-      '#tag' => 'meta',
-      '#attributes' => array(
-        'http-equiv' => 'cleartype',
-        'content' => 'on',
-      ),
-    ),
-  );
-  foreach ($elements as $name => $element) {
-    drupal_add_html_head($element, $name);
-  }
+  // Display the default mobile metatags for responsive design.
+  _theme_mobile_meta_tags();
 
   // Populate the page template suggestions.
   if ($suggestions = theme_get_suggestions(arg(), 'html')) {
@@ -3077,7 +3084,7 @@ function template_preprocess_maintenance_page(&$variables) {
   $site_name = $site_config->get('name');
   $site_slogan = $site_config->get('slogan');
 
-  // Construct page title
+  // Construct page title.
   if (drupal_get_title()) {
     $head_title = array(
       'title' => strip_tags(drupal_get_title()),
@@ -3126,6 +3133,9 @@ function template_preprocess_maintenance_page(&$variables) {
     $variables['attributes']['class'][] = 'sidebar-' . $variables['layout'];
   }
 
+  // Display the default mobile metatags for responsive design.
+  _theme_mobile_meta_tags();
+
   // Dead databases will show error messages so supplying this template will
   // allow themers to override the page and the content completely.
   if (isset($variables['db_is_active']) && !$variables['db_is_active']) {
@@ -3157,6 +3167,38 @@ function template_process_maintenance_page(&$variables) {
 }
 
 /**
+ * Process variables for install-page.tpl.php.
+ *
+ * Calls template_preprocess_install_page() to modify the $variables
+ * array.
+ *
+ * The $variables array contains the following arguments:
+ * - $content
+ *
+ * @see install-page.tpl.php
+ * @see template_preprocess_install_page()
+ */
+function template_preprocess_install_page(&$variables) {
+ template_preprocess_maintenance_page($variables);
+}
+
+/**
+ * Theme process function for theme_install_page().
+ *
+ * The variables array generated here is a mirror of template_process_html().
+ * This processor will run its course when theme_install_page() is invoked.
+ *
+ * @see install-page.tpl.php
+ * @see template_process_html()
+ */
+function template_process_install_page(&$variables) {
+  $variables['head']    = drupal_get_html_head();
+  $variables['css']     = drupal_add_css();
+  $variables['styles']  = drupal_get_css();
+  $variables['scripts'] = drupal_get_js();
+}
+
+/**
  * Preprocess variables for region.tpl.php
  *
  * Prepares the values passed to the theme_region function to be passed into a
@@ -3267,7 +3309,8 @@ function drupal_common_theme() {
       'template' => 'maintenance-page',
     ),
     'install_page' => array(
-      'variables' => array('content' => NULL),
+      'variables' => array('content' => NULL, 'show_messages' => TRUE),
+      'template' => 'install-page',
     ),
     'task_list' => array(
       'variables' => array('items' => NULL, 'active' => NULL),
diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index 9215957..1001ba1 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -148,20 +148,6 @@ function theme_task_list($variables) {
 }
 
 /**
- * Returns HTML for the installation page.
- *
- * Note: this function is not themeable.
- *
- * @param $variables
- *   An associative array containing:
- *   - content: The page content to show.
- */
-function theme_install_page($variables) {
-  drupal_add_http_header('Content-Type', 'text/html; charset=utf-8');
-  return theme('maintenance_page', $variables);
-}
-
-/**
  * Returns HTML for a results report of an operation run by authorize.php.
  *
  * @param $variables
diff --git a/core/modules/system/templates/maintenance-page.tpl.php b/core/modules/system/templates/maintenance-page.tpl.php
index 5da7a1a..2e93bcd 100644
--- a/core/modules/system/templates/maintenance-page.tpl.php
+++ b/core/modules/system/templates/maintenance-page.tpl.php
@@ -13,10 +13,8 @@
  * @ingroup themeable
  */
 ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->langcode ?>" lang="<?php print $language->langcode ?>" dir="<?php print $language->dir ?>">
-
+<!DOCTYPE html>
+<html lang="<?php print $language->langcode ?>" dir="<?php print $language->dir ?>">
 <head>
   <title><?php print $head_title; ?></title>
   <?php print $head; ?>
diff --git a/core/themes/seven/js/mobile.install.js b/core/themes/seven/js/mobile.install.js
index 6784daa..a6af9f1 100644
--- a/core/themes/seven/js/mobile.install.js
+++ b/core/themes/seven/js/mobile.install.js
@@ -18,11 +18,11 @@
   function installStepsSetup () {
     var steps = document.querySelectorAll('.task-list li');
     if (steps.length) {
-      var branding = document.querySelector('#branding');
+      var header = document.querySelector('#header');
       var stepIndicator = document.createElement('div');
       stepIndicator.className = 'step-indicator';
       stepIndicator.innerHTML = findActiveStep(steps) + '/' + steps.length;
-      branding.appendChild(stepIndicator);
+      header.appendChild(stepIndicator);
     }
   }
 
diff --git a/core/themes/seven/seven.theme b/core/themes/seven/seven.theme
index 61212fe..9be4ab6 100644
--- a/core/themes/seven/seven.theme
+++ b/core/themes/seven/seven.theme
@@ -133,6 +133,11 @@ function seven_tablesort_indicator($variables) {
  */
 function seven_preprocess_install_page(&$variables) {
   drupal_add_js(drupal_get_path('theme', 'seven') . '/js/mobile.install.js');
+  drupal_add_css(drupal_get_path('theme', 'seven') . '/install-page.css', array('group' => CSS_AGGREGATE_THEME));
+  $variables['attributes']['class'][] = 'install-page';
+  if(empty($variables['site_name'])) {
+     $variables['site_name'] = 'Drupal';
+  }
 }
 
 /**
diff --git a/core/themes/seven/style-rtl.css b/core/themes/seven/style-rtl.css
index f4097d9..9bb9d5a 100644
--- a/core/themes/seven/style-rtl.css
+++ b/core/themes/seven/style-rtl.css
@@ -126,16 +126,6 @@ body.in-maintenance #content {
   padding-left: 20px;
   padding-right: 0;
 }
-ol.task-list {
-  margin-right: 0;
-}
-ol.task-list li {
-  padding: 0.5em 20px 0.5em 1em;
-}
-ol.task-list li.active {
-  background: transparent url(images/task-item-rtl.png) no-repeat right 50%;
-  padding: 0.5em 20px 0.5em 1em;
-}
 
 /* Overlay theming */
 .overlay #branding .breadcrumb {
diff --git a/core/themes/seven/style.css b/core/themes/seven/style.css
index 52db095..c448fee 100644
--- a/core/themes/seven/style.css
+++ b/core/themes/seven/style.css
@@ -920,7 +920,6 @@ body.in-maintenance #sidebar-first {
 }
 body.in-maintenance #content {
   float: right; /* LTR */
-  max-width: 550px;
   clear: none;
   width: 72%;
 }
@@ -959,41 +958,6 @@ body.in-maintenance #logo {
     width: auto;
   }
 }
-ol.task-list {
-  margin-left: 0; /* LTR */
-  list-style-type: none;
-  list-style-image: none;
-}
-ol.task-list li {
-  padding: 0.5em 1em 0.5em 20px; /* LTR */
-  color: #adadad;
-}
-ol.task-list li.active {
-  background: transparent url(images/task-item.png) no-repeat 3px 50%; /* LTR */
-  padding: 0.5em 1em 0.5em 20px; /* LTR */
-  color: #000;
-}
-ol.task-list li.done {
-  background: transparent url(images/task-check.png) no-repeat 0 50%;
-  color: green;
-}
-body.in-maintenance #branding .step-indicator {
-  display: none;
-}
-@media all and (max-width: 768px) {
-  ol.task-list,
-  body.in-maintenance #logo {
-    display: none;
-  }
-  body.in-maintenance #branding h1 {
-    float: left;
-    width: auto;
-  }
-  body.in-maintenance #branding .step-indicator {
-    display: block;
-    float: right;
-  }
-}
 
 /* Overlay theming */
 .overlay #branding {
@@ -1683,7 +1647,6 @@ details.fieldset-no-legend {
   }
 }
 
-
 /**
  * Node form dropbuttons.
  */
