diff --git a/viewfield.module b/viewfield.module
index 96f03f2..df05383 100755
--- a/viewfield.module
+++ b/viewfield.module
@@ -140,6 +140,15 @@ function viewfield_widget(&$form, &$form_state, $field, $items, $delta = 0) {
     '#type' => $field['widget']['type'],
     '#default_value' => isset($items[$delta]) ? $items[$delta] : NULL,
   );
+  // If a stored value exists, use it as default value, regardless of the
+  // 'force_default' setting.
+  if (isset($items[$delta])) {
+    $element['#default_value'] = $items[$delta];
+  }
+  // Otherwise, use the widget's default value, if any.
+  elseif (isset($field['widget']['default_value'])) {
+    $element['#default_value'] = $field['widget']['default_value'];
+  }
   return $element;
 }
 
@@ -165,13 +174,14 @@ function viewfield_select_process($element, $edit, $form_state, $form) {
 
   $field = isset($form['#field_info'][$element['#field_name']]) ? $form['#field_info'][$element['#field_name']] : NULL;
   $element['#field'] = $field;
+
   // Display the form to let the user pick a view.
   $options = _viewfield_potential_references($field, $element['#delta']);
   $element['vname'] = array(
     '#type' => 'select',
     '#title' => $element['#title'],
     '#options' => $options,
-    '#default_value' => isset($field['widget']['default_value']) ? $field['widget']['default_value'][$element['#delta']]['vname'] : NULL,
+    '#default_value' => isset($element['#default_value']['vname']) ? $element['#default_value']['vname'] : NULL,
     '#required' => $element['#required'],
     '#access' => $is_field_settings_form || !$field['widget']['force_default'],
     '#description' => $element['#description'],
@@ -189,7 +199,7 @@ function viewfield_select_process($element, $edit, $form_state, $form) {
       '%field' => $field['widget']['label'],
       '@value' => $label,
     )),
-    '#default_value' => isset($field['widget']['default_value']) ? $field['widget']['default_value'][$element['#delta']]['vargs'] : NULL,
+    '#default_value' => isset($element['#default_value']['vargs']) ? $element['#default_value']['vargs'] : NULL,
     '#access' => $is_field_settings_form || !$field['widget']['force_default'],
     '#description' => t('A comma separated list of arguments to pass to the selected view. Wrap arguments containing commas in double quotes. Replace double quotes in arguments with two double quotes.'),
   );
