diff --git a/modules/image/image.field.inc b/modules/image/image.field.inc
index c3ac1d5..b28cd62 100644
--- a/modules/image/image.field.inc
+++ b/modules/image/image.field.inc
@@ -25,6 +25,7 @@ function image_field_info() {
         'title_field' => 0,
         'max_resolution' => '',
         'min_resolution' => '',
+        'default_image' => 0,
       ),
       'default_widget' => 'image_image',
       'default_formatter' => 'image',
@@ -152,6 +153,14 @@ function image_field_instance_settings_form($field, $instance) {
     '#weight' => 11,
   );
 
+  $form['default_image'] = array(
+    '#title' => t('Default image'),
+    '#type' => 'managed_file',
+    '#description' => t("If no image is uploaded, this image will be shown on display and will override the field's default image."),
+    '#default_value' => $settings['default_image'],
+    '#upload_location' => $field['settings']['uri_scheme'] . '://default_images/',
+  );
+
   return $form;
 }
 
@@ -191,8 +200,16 @@ function image_field_load($entity_type, $entities, $field, $instances, $langcode
 function image_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
   // If there are no files specified at all, use the default.
   foreach ($entities as $id => $entity) {
-    if (empty($items[$id]) && $field['settings']['default_image']) {
-      if ($file = file_load($field['settings']['default_image'])) {
+    if (empty($items[$id])) {
+      $fid = 0;
+      if ($instances[$id]['settings']['default_image']) {
+        $fid = $instances[$id]['settings']['default_image'];
+      }
+      elseif ($field['settings']['default_image']) {
+        $fid = $field['settings']['default_image'];
+      }
+
+      if ($fid && ($file = file_load($fid))) {
         $items[$id][0] = (array) $file + array(
           'is_default' => TRUE,
           'alt' => '',
diff --git a/modules/image/image.module b/modules/image/image.module
index 066bd34..d12f613 100644
--- a/modules/image/image.module
+++ b/modules/image/image.module
@@ -467,6 +467,62 @@ function image_field_update_field($field, $prior_field, $has_data) {
 }
 
 /**
+ * Implements hook_field_delete_instance().
+ */
+function image_field_delete_instance($instance) {
+  $field = field_read_field($instance['field_name']);
+
+  if ($field['type'] != 'image') {
+    return;
+  }
+
+  // The value of a managed_file element can be an array if #extended == TRUE.
+  $fid = (is_array($instance['settings']['default_image']) ? $instance['settings']['default_image']['fid'] : $instance['settings']['default_image']);
+  if ($fid && ($file = file_load($fid))) {
+    file_usage_delete($file, 'image', 'default_image', $instance['id']);
+  }
+}
+
+/**
+ * Implements hook_field_update_instance().
+ */
+function image_field_update_instance($instance, $prior_instance) {
+  $field = field_read_field($instance['field_name']);
+
+  if ($field['type'] != 'image') {
+    return;
+  }
+
+  // The value of a managed_file element can be an array if #extended == TRUE.
+  $fid_new = (is_array($instance['settings']['default_image']) ? $instance['settings']['default_image']['fid'] : $instance['settings']['default_image']);
+  $fid_old = (is_array($prior_instance['settings']['default_image']) ? $prior_instance['settings']['default_image']['fid'] : $prior_instance['settings']['default_image']);
+
+  $file_new = $fid_new ? file_load($fid_new) : FALSE;
+
+  if ($fid_new != $fid_old) {
+
+    // Is there a new file?
+    if ($file_new) {
+      $file_new->status = FILE_STATUS_PERMANENT;
+      file_save($file_new);
+      file_usage_add($file_new, 'image', 'default_image', $instance['id']);
+    }
+
+    // Is there an old file?
+    if ($fid_old && ($file_old = file_load($fid_old))) {
+      file_usage_delete($file_old, 'image', 'default_image', $instance['id']);
+    }
+  }
+
+  // If the upload destination changed, then move the file.
+  if ($file_new && (file_uri_scheme($file_new->uri) != $field['settings']['uri_scheme'])) {
+    $directory = $field['settings']['uri_scheme'] . '://default_images/';
+    file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
+    file_move($file_new, $directory . $file_new->filename);
+  }
+}
+
+/**
  * Clear cached versions of a specific file in all styles.
  *
  * @param $path
