diff --git a/entity_translation.module b/entity_translation.module
index cebc965..1fea6a3 100644
--- a/entity_translation.module
+++ b/entity_translation.module
@@ -1245,10 +1245,14 @@ function entity_translation_field_attach_form($entity_type, $entity, &$form, &$f
 function entity_translation_prepare_element($element, &$form_state) {
   static $drupal_static_fast;
   if (!isset($drupal_static_fast)) {
-    $drupal_static_fast['source_forms'] = &drupal_static(__FUNCTION__, array());
+    $drupal_static_fast = &drupal_static(__FUNCTION__, array(
+      'source_forms' => array(),
+      'source_form_states' => array(),
+    ));
   }
 
   $source_forms = &$drupal_static_fast['source_forms'];
+  $source_form_states = &$drupal_static_fast['source_form_states'];
   $form = $form_state['complete form'];
   $build_id = $form['#build_id'];
   $source = $element['#source'];
@@ -1265,9 +1269,11 @@ function entity_translation_prepare_element($element, &$form_state) {
     $source_form_state = $form_state;
     field_attach_form($entity_type, $element['#entity'], $source_form, $source_form_state, $source);
     $source_forms[$build_id][$source][$entity_type][$id] = &$source_form;
+    $source_form_states[$build_id][$source][$entity_type][$id] = &$source_form_state;
   }
 
   $source_form = &$source_forms[$build_id][$source][$entity_type][$id];
+  $source_form_state = $source_form_states[$build_id][$source][$entity_type][$id];
   $langcode = $element['#language'];
   $field_name = $element['#field_name'];
 
@@ -1278,6 +1284,7 @@ function entity_translation_prepare_element($element, &$form_state) {
   if (isset($source_form[$field_name][$source])) {
     $element[$langcode] = $source_form[$field_name][$source];
     entity_translation_form_element_language_replace($element, $source, $langcode);
+    entity_translation_form_element_state_replace($form, $field_name, $source, $langcode, $source_form_state, $form_state);
     unset($element[$element['#previous']]);
   }
 
@@ -1285,6 +1292,18 @@ function entity_translation_prepare_element($element, &$form_state) {
 }
 
 /**
+ * Helper function. Sets the right values in $form_state['field'] when using
+ * source language values as defaults.
+ */
+function entity_translation_form_element_state_replace($form, $field_name, $source, $langcode, $source_form_state, &$form_state) {
+  if (isset($form[$field_name][$langcode]['#field_parents'])) {
+    $parents = $form[$field_name][$langcode]['#field_parents'];
+    $source_state = field_form_get_state($parents, $field_name, $source, $source_form_state);
+    field_form_set_state($parents, $field_name, $langcode, $form_state, $source_state);
+  }
+}
+
+/**
  * Helper function. Recursively replaces the source language with the given one.
  */
 function entity_translation_form_element_language_replace(&$element, $source, $langcode) {
