diff --git wysiwyg.module wysiwyg.module
index 18d1f27..ce73758 100644
--- wysiwyg.module
+++ wysiwyg.module
@@ -628,42 +628,41 @@ function wysiwyg_profile_load_all() {
  */
 function wysiwyg_user($type, &$edit, &$user, $category = NULL) {
   if ($type == 'form' && $category == 'account') {
-    // @todo http://drupal.org/node/322433
-    $profile = new stdClass;
-    if (isset($profile->settings['user_choose']) && $profile->settings['user_choose']) {
-      $form['wysiwyg'] = array(
-        '#type' => 'fieldset',
-        '#title' => t('Wysiwyg Editor settings'),
-        '#weight' => 10,
-        '#collapsible' => TRUE,
-        '#collapsed' => TRUE,
-      );
-      $form['wysiwyg']['wysiwyg_status'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Enable editor by default'),
-        '#default_value' => isset($user->wysiwyg_status) ? $user->wysiwyg_status : (isset($profile->settings['default']) ? $profile->settings['default'] : FALSE),
-        '#return_value' => 1,
-        '#description' => t('If enabled, rich-text editing is enabled by default in textarea fields.'),
+    $user_formats = filter_formats();
+    $options = array();
+    $options_default = array();
+    foreach ($wysiwyg_profile_load_all() as $format => $profile) {
+      // Only show formats a user has access to use that allow user_choose.
+      if (!empty($profile->settings['user_choose']) && isset($user_formats[$format])) {
+        $options[$format] = $user_formats[$format]->name;
+        if (wysiwyg_user_get_status($profile)) {
+          $options_default[] = $format;
+        }
+      }
+    }
+    if (!empty($options)) {
+      $form['wysiwyg_status'] = array(
+        '#type' => 'checkboxes',
+        '#title' => t('Input formats enabled for rich-text editing'),
+        '#default_value' => $options_default,
+        '#options' => $options,
       );
       return array('wysiwyg' => $form);
     }
   }
-  elseif ($type == 'validate' && isset($edit['wysiwyg_status'])) {
-    return array('wysiwyg_status' => $edit['wysiwyg_status']);
-  }
 }
 
 function wysiwyg_user_get_status($profile) {
   global $user;
 
-  if (!empty($profile->settings['user_choose']) && isset($user->wysiwyg_status)) {
-    $status = $user->wysiwyg_status;
+  if (!empty($profile->settings['user_choose']) && isset($user->wysiwyg_status[$profile->format])) {
+    $status = $user->wysiwyg_status[$profile->format];
   }
   else {
     $status = isset($profile->settings['default']) ? $profile->settings['default'] : TRUE;
   }
 
-  return $status;
+  return (bool) $status;
 }
 
 /**
