diff --git a/includes/theme.maintenance.inc b/includes/theme.maintenance.inc
index 0b9b9fdbb604896b9cb947a6e235434f2059c9d5..b4cc24940d545596b94bae97d43ac17ade4cfe96 100644
--- a/includes/theme.maintenance.inc
+++ b/includes/theme.maintenance.inc
@@ -139,6 +139,12 @@ function theme_install_page($content) {
     $variables['messages'] .= theme('status_messages', 'status');
   }
 
+  // This was called as a theme hook (not template), so we need to
+  // fix path_to_theme() for the template, to point at the actual
+  // theme rather than system module as owner of the hook.
+  global $theme_path;
+  $theme_path = 'themes/garland';
+
   return theme_render_template('themes/garland/maintenance-page.tpl.php', $variables);
 }
 
@@ -171,6 +177,12 @@ function theme_update_page($content, $show_messages = TRUE) {
     $variables['messages'] .= theme('status_messages', 'warning');
   }
 
+  // This was called as a theme hook (not template), so we need to
+  // fix path_to_theme() for the template, to point at the actual
+  // theme rather than system module as owner of the hook.
+  global $theme_path;
+  $theme_path = 'themes/garland';
+
   return theme_render_template('themes/garland/maintenance-page.tpl.php', $variables);
 }