diff --git a/multiselect/multiselect.module b/multiselect/multiselect.module
index 0c1c83a..3ef8dff 100644
--- a/multiselect/multiselect.module
+++ b/multiselect/multiselect.module
@@ -170,6 +170,9 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
   $unselected_options = array();
   // Add selected items to the array first
   if (is_array($items)) {
+    $field_info  = field_info_field($element['#field_name']);
+    $indexes_key = key($field_info['indexes']);
+    $indexes     = array_values($field_info['indexes'][$indexes_key]);
     foreach ($items as $key => $value) {
       if (is_array($value) && array_key_exists('value', $value)) { // With CCK, it's an array.
         $selected_options[$value['value']] = $value['value'];
@@ -186,6 +189,13 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
       elseif (array_key_exists($value, $options)) { // With FAPI, it's not.
         $selected_options[$value] = $options[$value];
       }
+      else {
+        foreach ($indexes as $index) {
+          if (isset($value[$index]) && array_key_exists($value[$index], $options)) {
+            $selected_options[$value[$index]] = $options[$value[$index]];
+          }
+        }
+      }
     }
   }
   else { // There's only one selected option.
