diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index a5a8885..1389015 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -280,6 +280,12 @@ function system_themes_admin_form_submit($form, &$form_state) {
   drupal_set_message(t('The configuration options have been saved.'));
   variable_set('admin_theme', $form_state['values']['admin_theme']);
   variable_set('node_admin_theme', $form_state['values']['node_admin_theme']);
+
+  // Because the theme selected to be admin doesn't have to be
+  // enabled, register the theme's blocks in the block table, if not
+  // already registered, so the essential blocks appear in
+  // the admin/structure/block form.
+  block_theme_initialize($form_state['values']['admin_theme']);
 }
 
 /**
