Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.337.2.7
diff -u -p -r1.337.2.7 theme.inc
--- includes/theme.inc	5 Dec 2008 22:32:50 -0000	1.337.2.7
+++ includes/theme.inc	3 Jan 2009 02:46:12 -0000
@@ -44,6 +44,15 @@ function init_theme() {
   // list of enabled themes.
   $theme = !empty($user->theme) && !empty($themes[$user->theme]->status) ? $user->theme : variable_get('theme_default', 'garland');
 
+  // Use the administrative theme if the user is looking at a page in the
+  // admin/* path.
+  if (arg(0) == 'admin') {
+    drupal_add_css(drupal_get_path('module', 'system') . '/admin.css', 'module');
+    // If block_admin_display() has set $custom_theme, don't pre-empt it.
+    if (!isset($custom_theme)) {
+       $custom_theme = variable_get('admin_theme', '0');
+    }
+  }
 
   // Allow modules to override the present theme... only select custom theme
   // if it is available in the list of installed themes.
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.440.2.45
diff -u -p -r1.440.2.45 system.module
--- modules/system/system.module	11 Dec 2008 17:51:34 -0000	1.440.2.45
+++ modules/system/system.module	3 Jan 2009 02:46:13 -0000
@@ -302,15 +302,6 @@ function system_menu($may_cache) {
       'type' => MENU_CALLBACK);
   }
   else {
-    /**
-     * Use the administrative theme if the user is looking at a page in the admin/* path.
-     */
-    if (arg(0) == 'admin') {
-      global $custom_theme;
-      $custom_theme = variable_get('admin_theme', '0');
-      drupal_add_css(drupal_get_path('module', 'system') .'/admin.css', 'module');
-    }
-
     // Add the CSS for this module. We put this in !$may_cache so it is only
     // added once per request.
     drupal_add_css(drupal_get_path('module', 'system') .'/defaults.css', 'module');
