Index: modules/color/color.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.module,v
retrieving revision 1.56
diff -u -p -r1.56 color.module
--- modules/color/color.module	18 Feb 2009 14:28:22 -0000	1.56
+++ modules/color/color.module	9 Apr 2009 16:24:57 -0000
@@ -54,29 +54,31 @@ function color_form_system_theme_setting
 /**
  * Implementation of hook_form_FORM_ID_alter().
  */
-function color_form_system_themes_alter(&$form, &$form_state) {
-  _color_theme_select_form_alter($form, $form_state);
+function color_form_system_themes_form_alter(&$form, &$form_state) {
+  foreach (element_children($form) as $theme) {
+    if (isset($form[$theme]['screenshot']) && $screenshot = _color_get_screenshot($theme)) {
+      $form[$theme]['screenshot']['#markup'] = $screenshot;
+    }
+  }
 }
 
 /**
  * Implementation of hook_form_FORM_ID_alter().
  */
-function color_form_system_theme_select_form_alter(&$form, &$form_state) {
-  _color_theme_select_form_alter($form, $form_state);
+function color_form_user_profile_form_alter(&$form, &$form_state) {
+  foreach (element_children($form['theme_select']['themes']) as $theme) {
+    if (isset($form['theme_select']['themes'][$theme]['screenshot']) && $screenshot = _color_get_screenshot($theme)) {
+      $form['theme_select']['themes'][$theme]['screenshot']['#markup'] = $screenshot;
+    }
+  }
 }
 
 /**
  * Helper for hook_form_FORM_ID_alter() implementations.
  */
-function _color_theme_select_form_alter(&$form, &$form_state) {
-  // Use the generated screenshot in the theme list.
-  $themes = list_themes();
-  foreach (element_children($form) as $theme) {
-    if ($screenshot = variable_get('color_' . $theme . '_screenshot')) {
-      if (isset($form[$theme]['screenshot'])) {
-        $form[$theme]['screenshot']['#markup'] = theme('image', $screenshot, '', '', array('class' => 'screenshot'), FALSE);
-      }
-    }
+function _color_get_screenshot($theme) {
+  if ($screenshot = variable_get('color_' . $theme . '_screenshot')) {
+    return theme('image', $screenshot, '', '', array('class' => 'screenshot'), FALSE);
   }
 }
 
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.132
diff -u -p -r1.132 system.admin.inc
--- modules/system/system.admin.inc	5 Apr 2009 12:31:57 -0000	1.132
+++ modules/system/system.admin.inc	9 Apr 2009 16:24:58 -0000
@@ -2203,8 +2203,14 @@ function theme_system_theme_select_form(
   foreach (element_children($form) as $key) {
     $row = array();
     if (isset($form[$key]['description']) && is_array($form[$key]['description'])) {
+
+      // Fetch info
+      $info = $form[$key]['description']['#value'];
+      // Localize theme description.
+      $description = t($info['description']);
+
       $row[] = drupal_render($form[$key]['screenshot']);
-      $row[] = drupal_render($form[$key]['description']);
+      $row[] = '<div class="theme-info"><h2>'. $info['name'].'</h2><div class="description">'. $description . ($key == variable_get('theme_default') ? '<br /> <em>'. t('(site default theme)') .'</em>' : '') .'</div></div>';
       $row[] = drupal_render($form['theme'][$key]);
     }
     $rows[] = $row;
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.676
diff -u -p -r1.676 system.module
--- modules/system/system.module	25 Mar 2009 18:40:50 -0000	1.676
+++ modules/system/system.module	9 Apr 2009 16:24:59 -0000
@@ -824,6 +824,16 @@ function system_user_form(&$edit, &$user
 }
 
 /**
+ * Implementation of hook_user_submit().
+ */
+function system_user_submit(&$edit, &$user, $category = NULL) {
+  if ($category == 'account' && $edit['theme'] == variable_get('theme_default')) {
+    // For the default theme, revert to an empty string so the user's theme updates when the site theme is changed.
+    $edit['theme'] = '';
+  }
+}
+
+/**
  * Implementation of hook_user_register().
  */
 function system_user_register(&$edit, &$user, $category = NULL) {
@@ -1033,9 +1043,6 @@ function system_theme_select_form($descr
       );
 
       foreach ($enabled as $info) {
-        // For the default theme, revert to an empty string so the user's theme updates when the site theme is changed.
-        $info->key = $info->name == variable_get('theme_default', 'garland') ? '' : $info->name;
-
         $screenshot = NULL;
         $theme_key = $info->name;
         while ($theme_key) {
@@ -1048,12 +1055,12 @@ function system_theme_select_form($descr
 
         $screenshot = $screenshot ? theme('image', $screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), FALSE) : t('no screenshot');
 
-        $form['themes'][$info->key]['screenshot'] = array('#markup' => $screenshot);
-        $form['themes'][$info->key]['description'] = array('#type' => 'item', '#title' => $info->name, '#markup' => dirname($info->filename) . ($info->name == variable_get('theme_default', 'garland') ? '<br /> <em>' . t('(site default theme)') . '</em>' : ''));
-        $options[$info->key] = '';
+        $form['themes'][$info->name]['screenshot'] = array('#markup' => $screenshot);
+        $form['themes'][$info->name]['description'] = array('#type' => 'value', '#value' => $info->info);
+        $options[$info->name] = '';
       }
 
-      $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $default_value ? $default_value : '');
+      $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $default_value ? $default_value : variable_get('theme_default'));
       $form['#weight'] = $weight;
       return $form;
     }
