Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.337.2.6
diff -u -p -r1.337.2.6 theme.inc
--- includes/theme.inc	1 Oct 2008 22:48:47 -0000	1.337.2.6
+++ includes/theme.inc	26 Nov 2008 22:39:29 -0000
@@ -44,11 +44,20 @@ function init_theme() {
   // list of enabled themes.
   $theme = !empty($user->theme) && !empty($themes[$user->theme]->status) ? $user->theme : variable_get('theme_default', 'garland');
 
-
-  // Allow modules to override the present theme... only select custom theme
-  // if it is available in the list of installed themes.
-  $theme = $custom_theme && $themes[$custom_theme] ? $custom_theme : $theme;
-
+  // Use the administrative theme if the user is looking at a page in the admin/* path
+  if (arg(0) == 'admin' || (arg(0) == 'node' && arg(1) == 'add') ||  (arg(0) == 'node' && arg(2) == 'edit') ||  (arg(0) == 'user' && arg(2) == 'edit')) {
+    drupal_add_css(drupal_get_path('module', 'system') . '/admin.css', 'module');
+    // if block_admin_display() in modules/block/block.module is the first caller, don't pre-empt it
+    if (!isset($custom_theme)) {
+       $custom_theme = variable_get('admin_theme', '0');
+    }
+  }
+  
+  // Allow modules to override the present theme. 
+  if ($custom_theme) { 
+    $theme = $custom_theme; 
+  }
+  
   // Store the identifier for retrieving theme settings with.
   $theme_key = $theme;
 
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.440.2.41
diff -u -p -r1.440.2.41 system.module
--- modules/system/system.module	13 Nov 2008 02:10:04 -0000	1.440.2.41
+++ modules/system/system.module	26 Nov 2008 22:39:31 -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');
