diff --git a/panelizer.install b/panelizer.install
index 3130b2c..0a37730 100644
--- a/panelizer.install
+++ b/panelizer.install
@@ -463,3 +463,34 @@ function panelizer_update_7110() {
     array('primary key' => array('entity_type', 'entity_id', 'revision_id', 'view_mode'))
   );
 }
+
+/**
+ * Delete all default {panelizer_entity} records.
+ */
+function panelizer_update_7111() {
+  // Loop through all entity types.
+  foreach (entity_get_info() as $entity_type => $entity_info) {
+    // Only proceed if this entity has view modes and bundles.
+    if (!empty($entity_info['view modes']) && is_array($entity_info['view modes'])
+      && !empty($entity_info['bundles']) && is_array($entity_info['bundles'])) {
+      // Also add an item for the 'default' display.
+      $view_modes = $entity_info['view modes'] + array('default');
+      foreach ($view_modes as $view_mode => $view_mode_info) {
+        foreach ($entity_info['bundles'] as $bundle => $bundle_info) {
+          $default_name = implode(':', array($entity_type, $bundle, 'default'));
+          if ($view_mode != 'page_manager') {
+            $default_name .= ':' . $view_mode;
+          }
+          // Update each record that has the default selection. Records are
+          // using a default value if a) the 'name' is the same as a default,
+          // and b) the did is 0.
+          db_delete('panelizer_entity')
+            ->condition('entity_type', $entity_type)
+            ->condition('name', $default_name)
+            ->condition('did', 0)
+            ->execute();
+        }
+      }
+    }
+  }
+}
diff --git a/plugins/entity/PanelizerEntityDefault.class.php b/plugins/entity/PanelizerEntityDefault.class.php
index 8e27f55..d8bad0d 100644
--- a/plugins/entity/PanelizerEntityDefault.class.php
+++ b/plugins/entity/PanelizerEntityDefault.class.php
@@ -769,6 +769,7 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
         // Otherwise unpack the loaded panelizer.
         else if (!empty($panelizers[$entity_id][$view_mode])) {
           $entity->panelizer[$view_mode] = ctools_export_unpack_object('panelizer_entity', $panelizers[$entity_id][$view_mode]);
+
           // If somehow we have no name AND no did, fill in the default.
           // This can happen if use of defaults has switched around maybe?
           if (empty($entity->panelizer[$view_mode]->did) &&
@@ -878,28 +879,34 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
         $view_mode = 'page_manager';
       }
 
-      // On entity insert, we only write the display if it is not a default.
+      // Work out the default display name for this bundle & view mode.
+      $default_name = implode(':', array($this->entity_type, $bundle, 'default'));
+      if ($view_mode != 'page_manager') {
+        $default_name .= ':' . $view_mode;
+      }
+
+      // May not need to save the record.
+      $save_panelizer = FALSE;
+
+      // Scenario 1: This is a custom display, i.e. not a default.
       // That probably means it came from an export or deploy or something
       // along those lines.
       if (empty($panelizer->name) && !empty($panelizer->display)) {
         // Ensure we don't accidentally overwrite existing display
         // data or anything silly like that.
         $panelizer = $this->clone_panelizer($panelizer, $entity);
-        // First write the display
+        // First, write the display.
         panels_save_display($panelizer->display);
 
         // Make sure we have the new did.
         $panelizer->did = $panelizer->display->did;
 
-        // Make sure there is a view mode.
-        if (empty($panelizer->view_mode)) {
-          $panelizer->view_mode = $view_mode;
-        }
-
-        // And write the new record.
-        drupal_write_record('panelizer_entity', $panelizer);
+        // Save the record.
+        $save_panelizer = TRUE;
       }
-      else {
+
+      // Scenario 2: The selected display is not the default display.
+      elseif (!empty($panelizer->name) && $panelizer->name != $default_name) {
         // We write the panelizer record to record which name is being used.
         // And ensure the did is NULL:
         $panelizer->did = NULL;
@@ -909,11 +916,18 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
         // since the revision_id cannot be NULL.
         $panelizer->revision_id = (int) $revision_id;
 
+        // Save the record.
+        $save_panelizer = TRUE;
+      }
+
+      // Only save the record if one of the above scenarios matches.
+      if ($save_panelizer) {
         // Make sure there is a view mode.
         if (empty($panelizer->view_mode)) {
           $panelizer->view_mode = $view_mode;
         }
 
+        // And write the new record.
         drupal_write_record('panelizer_entity', $panelizer);
       }
     }
@@ -925,7 +939,8 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
       return;
     }
 
-    // If there's no panelizer information on the entity then there is nothing to do.
+    // If there's no panelizer information on the entity then there is nothing
+    // to do.
     if (empty($entity->panelizer)) {
       return;
     }
@@ -941,6 +956,16 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
         $view_mode = 'page_manager';
       }
 
+      // Work out the default display name for this bundle & view mode.
+      $default_name = implode(':', array($this->entity_type, $bundle, 'default'));
+      if ($view_mode != 'page_manager') {
+        $default_name .= ':' . $view_mode;
+      }
+
+      // May not need to save the record.
+      $save_panelizer = FALSE;
+
+      // Work out how to save this record. 
       if ($this->supports_revisions) {
         if (empty($panelizer->revision_id) || $panelizer->revision_id != $revision_id) {
           $panelizer->revision_id = $revision_id;
@@ -959,49 +984,69 @@ abstract class PanelizerEntityDefault implements PanelizerEntityInterface {
         }
       }
 
+      // Scenario 1: This is a custom display, just save it.
       // The editor will set this flag if the display is modified. This lets
       // us know if we need to clone a new display or not.
       // NOTE: This means that when exporting or deploying, we need to be sure
       // to set the display_is_modified flag to ensure this gets written.
       if (!empty($panelizer->display_is_modified)) {
-        // If this is a new entry or the entry is using a display from a default,
-        // clone the display.
+        // If this is a new entry or the entry is using a display from a
+        // default, clone the display.
         if (!$update || empty($panelizer->did)) {
           $entity->panelizer[$view_mode] = $panelizer = $this->clone_panelizer($panelizer, $entity);
 
-          // Update the cache key since we are adding a new display
+          // Update the cache key since we are adding a new display.
           $panelizer->display->cache_key = implode(':', array('panelizer', $panelizer->entity_type, $panelizer->entity_id, $view_mode));
         }
 
-        // First write the display
+        // First write the display.
         panels_save_display($panelizer->display);
 
         // Make sure we have the did.
         $panelizer->did = $panelizer->display->did;
 
-        // Ensure that we always write this as NULL when we have our own panel:
+        // Ensure that we always write this as NULL when we have our own
+        // panel.
         $panelizer->name = NULL;
 
-        // Make sure there is a view mode.
-        if (empty($panelizer->view_mode)) {
-          $panelizer->view_mode = $view_mode;
-        }
+        // Save the record.
+        $save_panelizer = TRUE;
+      }
 
-        // And write the new record.
-        drupal_write_record('panelizer_entity', $panelizer, $update);
+      // Scenario 2:
+      // Display is set to the default display.
+      elseif (!empty($panelizer->name) && $panelizer->name == $default_name) {
+        // Delete the existing record, if one exists.
+        db_delete('panelizer_entity')
+          ->condition('entity_type', $this->entity_type)
+          ->condition('entity_id', $entity_id)
+          ->condition('revision_id', $revision_id)
+          ->condition('view_mode', $view_mode)
+          ->execute();
       }
-      else {
+
+      // Scenario 3:
+      // Display is set to a non-default display.
+      elseif (!empty($panelizer->name) && $panelizer->name != $default_name) {
+        $panelizer->did = NULL;
         $panelizer->entity_type = $this->entity_type;
         $panelizer->entity_id = $entity_id;
         // The (int) ensures that entities that do not support revisions work
         // since the revision_id cannot be NULL.
         $panelizer->revision_id = (int) $revision_id;
 
+        // Save the record.
+        $save_panelizer = TRUE;
+      }
+
+      // Only save the record if one of the above scenarios matches.
+      if ($save_panelizer) {
         // Make sure there is a view mode.
         if (empty($panelizer->view_mode)) {
           $panelizer->view_mode = $view_mode;
         }
 
+        // And write the new record.
         drupal_write_record('panelizer_entity', $panelizer, $update);
       }
     }
