diff --git a/includes/media.admin.inc b/includes/media.admin.inc
index 238f98c..f0db8bb 100644
--- a/includes/media.admin.inc
+++ b/includes/media.admin.inc
@@ -242,7 +242,7 @@ function media_import_batch_import_files($files, &$context) {
         // @todo Is this load step really necessary? When there's time, test
         //   this, and either remove it, or comment why it's needed.
         $loaded_file = file_load($file_obj->fid);
-        $image_in_message = file_view_file($loaded_file, 'media_preview');
+        $image_in_message = file_view_file($loaded_file, 'preview');
       }
     }
     catch (Exception $e) {
diff --git a/includes/media.filter.inc b/includes/media.filter.inc
index 32424df..0b193f5 100644
--- a/includes/media.filter.inc
+++ b/includes/media.filter.inc
@@ -80,7 +80,7 @@ function _media_url_parse_full_links($match) {
 
     // Generate a preview of the file
     // @TODO: Allow user to change the formatter in the filter settings.
-    $preview = file_view_file($file, 'media_large');
+    $preview = file_view_file($file, 'full');
     $preview['#show_names'] = TRUE;
 
     return drupal_render($preview);
@@ -158,11 +158,32 @@ function media_token_to_markup($match, $wysiwyg = FALSE) {
     if (!isset($tag_info['fid'])) {
       throw new Exception('No file Id');
     }
+
+    // Ensure a valid view mode is being requested.
     if (!isset($tag_info['view_mode'])) {
-      // Should we log or throw an exception here instead?
-      // Do we need to validate the view mode for fields API?
       $tag_info['view_mode'] = media_variable_get('wysiwyg_default_view_mode');
     }
+    elseif ($tag_info['view_mode'] != 'default') {
+      $file_entity_info = entity_get_info('file');
+      if (!in_array($tag_info['view_mode'], array_keys($file_entity_info['view modes']))) {
+        // Media 1.x defined some old view modes that have been superseded by
+        // more semantically named ones in File Entity. The media_update_7203()
+        // function updates field settings that reference the old view modes,
+        // but it's impractical to update all text content, so adjust
+        // accordingly here.
+        static $view_mode_updates = array(
+          'media_preview' => 'preview',
+          'media_small' => 'teaser',
+          'media_large' => 'full',
+        );
+        if (isset($view_mode_updates[$tag_info['view_mode']])) {
+          $tag_info['view_mode'] = $view_mode_updates[$tag_info['view_mode']];
+        }
+        else {
+          throw new Exception('Invalid view mode');
+        }
+      }
+    }
 
     $file = file_load($tag_info['fid']);
     if (!$file) {
diff --git a/includes/media.types.inc b/includes/media.types.inc
index 0561042..29cd826 100644
--- a/includes/media.types.inc
+++ b/includes/media.types.inc
@@ -44,7 +44,7 @@ function media_file_type_info_alter(array &$info) {
 function media_file_type_media_default_view($file, $view_mode, $langcode) {
   // During preview, or when custom attribute values are needed on the displayed
   // element, use a media icon.
-  if ($view_mode == 'media_preview' || isset($file->override)) {
+  if ($view_mode == 'preview' || isset($file->override)) {
     return array(
       '#theme' => 'media_formatter_large_icon',
       '#file' => $file,
@@ -231,11 +231,17 @@ function media_file_default_displays() {
   $default_displays = array();
 
   $default_image_styles = array(
-    'media_preview' => 'square_thumbnail',
-    'media_large' => 'large',
-    'media_original' => ''
+    'preview' => 'square_thumbnail',
+    'teaser' => 'medium',
+    'full' => 'large',
   );
 
+  // Only needed by sites that updated from Media 1.x.
+  // @see media_entity_info_alter()
+  if (media_variable_get('show_deprecated_view_modes')) {
+    $default_image_styles['media_original'] = '';
+  }
+
   foreach ($default_image_styles as $view_mode => $image_style) {
     $display_name = 'image__' . $view_mode . '__file_image';
     $default_displays[$display_name] = (object) array(
diff --git a/includes/media.variables.inc b/includes/media.variables.inc
index 64998e6..e1eca6d 100644
--- a/includes/media.variables.inc
+++ b/includes/media.variables.inc
@@ -117,7 +117,7 @@ function media_variable_default($name = NULL) {
       'wysiwyg_title' => 'Media browser',
       'wysiwyg_icon_title' => 'Add media',
       //@todo: We should do this per type actually.  For "other" it should be a link.
-      'wysiwyg_default_view_mode' => 'media_large',
+      'wysiwyg_default_view_mode' => 'full',
       // Types which can be selected when embedding media vs wysiwyg.
       'wysiwyg_allowed_types' => array('audio', 'image', 'video'),
       // Attributes which can be modified via the wysiwyg and persist.
@@ -146,6 +146,10 @@ function media_variable_default($name = NULL) {
       'icon_base_directory' => drupal_get_path('module', 'media') . '/images/icons',
       'icon_set' => 'default',
 
+      // Whether to show the legacy Link and Original view modes. Set to TRUE
+      // in media_update_7203() to not break sites updating from 1.x.
+      'show_deprecated_view_modes' => FALSE,
+
       // Deprecated variables no longer in use, but should still be uninstalled.
       'show_file_type_rebuild_nag' => NULL,
       'field_select_media_text' => NULL,
diff --git a/media.install b/media.install
index 04f0e8a..e6d8e47 100644
--- a/media.install
+++ b/media.install
@@ -169,13 +169,6 @@ function media_install() {
   // Create the defined types.
   foreach ($types as $name => $type) {
     media_type_save($type);
-
-    // @todo By default, we hide the file display in the 'small' view mode for
-    //   legacy reasons. Does it still make sense to do so? See
-    //   http://drupal.org/node/1051090.
-    $bundle_settings = field_bundle_settings('file', $name);
-    $bundle_settings['extra_fields']['display']['file']['media_small'] = array('weight' => 0, 'visible' => FALSE);
-    field_bundle_settings('file', $name, $bundle_settings);
   }
 }
 
@@ -689,3 +682,185 @@ function media_update_7201() {
 function media_update_7202() {
   module_enable(array('views'));
 }
+
+/**
+ * Update old Media view modes to the new File Entity ones.
+ */
+function media_update_7203() {
+  $view_mode_updates = array(
+    'media_preview' => 'preview',
+    'media_small' => 'teaser',
+    'media_large' => 'full',
+  );
+
+  // Update the media__wysiwyg_default_view_mode variable.
+  $wysiwyg_default_view_mode = variable_get('media__wysiwyg_default_view_mode');
+  if (isset($wysiwyg_default_view_mode) && isset($view_mode_updates[$wysiwyg_default_view_mode])) {
+    $wysiwyg_default_view_mode = $view_mode_updates[$wysiwyg_default_view_mode];
+    variable_set('media__wysiwyg_default_view_mode', $wysiwyg_default_view_mode);
+  }
+
+  // Update view mode references in the 'field_bundle_settings' variable.
+  $field_bundle_settings = variable_get('field_bundle_settings');
+  if (!empty($field_bundle_settings['file'])) {
+    foreach ($field_bundle_settings['file'] as $file_type => $info) {
+      // Per-bundle information about the view modes.
+      foreach ($view_mode_updates as $old_view_mode => $new_view_mode) {
+        if (isset($info['view_modes'][$old_view_mode])) {
+          $field_bundle_settings['file'][$file_type]['view_modes'][$new_view_mode] = $info['view_modes'][$old_view_mode];
+          unset($field_bundle_settings['file'][$file_type]['view_modes'][$old_view_mode]);
+        }
+        // The File Entity module defaults to not use custom settings for the
+        // new view modes, but the Media module used to default to using custom
+        // settings, so if this variable is not defined, use the prior default.
+        if (!isset($field_bundle_settings['file'][$file_type]['view_modes'][$new_view_mode]['custom_settings'])) {
+          $field_bundle_settings['file'][$file_type]['view_modes'][$new_view_mode]['custom_settings'] = TRUE;
+        }
+      }
+
+      // Settings for the "extra fields" configured on the Manage Display page.
+      if (!empty($info['extra_fields']['display'])) {
+        foreach ($info['extra_fields']['display'] as $extra_field_name => $extra_field_info) {
+          foreach ($view_mode_updates as $old_view_mode => $new_view_mode) {
+            if (isset($extra_field_info[$old_view_mode])) {
+              $field_bundle_settings['file'][$file_type]['extra_fields']['display'][$extra_field_name][$new_view_mode] = $extra_field_info[$old_view_mode];
+              unset($field_bundle_settings['file'][$file_type]['extra_fields']['display'][$extra_field_name][$old_view_mode]);
+            }
+          }
+        }
+      }
+    }
+  }
+  variable_set('field_bundle_settings', $field_bundle_settings);
+
+  // Move settings for fields attached to files from the old view modes to the
+  // new ones.
+  $instances = field_read_instances(array('entity_type' => 'file'));
+  foreach ($instances as $instance) {
+    $updated = FALSE;
+    foreach ($view_mode_updates as $old_view_mode => $new_view_mode) {
+      if (isset($instance['display'][$old_view_mode])) {
+        $instance['display'][$new_view_mode] = $instance['display'][$old_view_mode];
+        unset($instance['display'][$old_view_mode]);
+        $updated = TRUE;
+      }
+    }
+    if ($updated) {
+      field_update_instance($instance);
+    }
+  }
+
+  // Move "Manage file display" settings from old view modes to new ones.
+  $file_display_names = db_query('SELECT name FROM {file_display}')->fetchCol();
+  foreach ($file_display_names as $old_file_display_name) {
+    list($file_type, $view_mode, $formatter) = explode('__', $old_file_display_name, 3);
+    if (isset($view_mode_updates[$view_mode])) {
+      $view_mode = $view_mode_updates[$view_mode];
+      $new_file_display_name = implode('__', array($file_type, $view_mode, $formatter));
+      db_delete('file_display')->condition('name', $new_file_display_name)->execute();
+      db_update('file_display')->fields(array('name' => $new_file_display_name))->condition('name', $old_file_display_name)->execute();
+    }
+  }
+
+  // Update file/image/media fields that use a formatter that reference an old
+  // file view modes to reference the new ones.
+  foreach (field_read_instances() as $instance) {
+    if (!empty($instance['display'])) {
+      $updated = FALSE;
+      foreach ($instance['display'] as $instance_view_mode => $display) {
+        if (isset($display['settings']['file_view_mode']) && isset($view_mode_updates[$display['settings']['file_view_mode']])) {
+          $instance['display'][$instance_view_mode]['settings']['file_view_mode'] = $view_mode_updates[$display['settings']['file_view_mode']];
+          $updated = TRUE;
+        }
+      }
+      if ($updated) {
+        field_update_instance($instance);
+      }
+    }
+  }
+
+  // Update formatter settings that reference the old view modes within saved
+  // Views.
+  if (db_table_exists('views_display')) {
+    $result = db_select('views_display', 'v')->fields('v', array('vid', 'id', 'display_options'))->execute();
+    foreach ($result as $record) {
+      if (!empty($record->display_options)) {
+        $display_options = unserialize($record->display_options);
+        if (_media_update_7203_update_views_display_options($display_options, $view_mode_updates)) {
+          db_update('views_display')
+            ->fields(array('display_options' => serialize($display_options)))
+            ->condition('vid', $record->vid)
+            ->condition('id', $record->id)
+            ->execute();
+        }
+      }
+    }
+  }
+
+  // Update formatter settings that reference the old view modes within unsaved
+  // Views in the CTools object cache. Objects in the CTools cache are instances
+  // of classes, so the Views module must be enabled to unserialize it
+  // correctly.
+  if (db_table_exists('ctools_object_cache') && module_exists('views')) {
+    $result = db_select('ctools_object_cache', 'c')->fields('c', array('sid', 'name', 'obj', 'data'))->condition('obj', 'view')->execute();
+    foreach ($result as $record) {
+      $view = unserialize($record->data);
+      if (!empty($view->display)) {
+        $updated = FALSE;
+        foreach ($view->display as $display_name => $display) {
+          if (!empty($display->display_options) && _media_update_7203_update_views_display_options($display->display_options, $view_mode_updates)) {
+            $updated = TRUE;
+          }
+        }
+        if ($updated) {
+          db_update('ctools_object_cache')
+            ->fields(array('data' => serialize($view)))
+            ->condition('sid', $record->sid)
+            ->condition('name', $record->name)
+            ->condition('obj', $record->obj)
+            ->execute();
+        }
+      }
+    }
+  }
+
+  // Clear caches that might contain stale Views displays.
+  if (module_exists('views')) {
+    cache_clear_all('*', 'cache_views', TRUE);
+    cache_clear_all('*', 'cache_views_data', TRUE);
+  }
+  if (module_exists('block')) {
+    cache_clear_all('*', 'cache_block', TRUE);
+  }
+  cache_clear_all('*', 'cache_page', TRUE);
+
+  // We still have the old media_link and media_original view modes that must be
+  // supported for now.
+  // @see media_entity_info_alter()
+  variable_set('media__show_deprecated_view_modes', TRUE);
+}
+
+/**
+ * Helper function for media_update_7203() to update display options within Views.
+ */
+function _media_update_7203_update_views_display_options(&$display_options, $view_mode_updates) {
+  $updated = FALSE;
+
+  // Update fields that use a formatter with a file_view_mode formatter setting.
+  if (!empty($display_options['fields'])) {
+    foreach ($display_options['fields'] as $field_name => $field_display) {
+      if (isset($field_display['settings']['file_view_mode']) && isset($view_mode_updates[$field_display['settings']['file_view_mode']])) {
+        $display_options['fields'][$field_name]['settings']['file_view_mode'] = $view_mode_updates[$field_display['settings']['file_view_mode']];
+        $updated = TRUE;
+      }
+    }
+  }
+
+  // Update Views that display files directly using a row plugin with a view
+  // mode setting.
+  if (isset($display_options['row_plugin']) && $display_options['row_plugin'] === 'file' && isset($display_options['row_options']['view_mode']) && isset($view_mode_updates[$display_options['row_options']['view_mode']])) {
+    $display_options['row_options']['view_mode'] = $view_mode_updates[$display_options['row_options']['view_mode']];
+    $updated = TRUE;
+  }
+  return $updated;
+}
\ No newline at end of file
diff --git a/media.module b/media.module
index 4bcdc28..e251733 100644
--- a/media.module
+++ b/media.module
@@ -71,15 +71,23 @@ function media_help($path, $arg) {
 
 /**
  * Implements hook_entity_info_alter().
- *
- * Add view modes to the file entity type, appropriate for displaying media.
  */
 function media_entity_info_alter(&$entity_info) {
-  $entity_info['file']['view modes']['media_link'] = array('label' => t('Link'), 'custom settings' => TRUE);
-  $entity_info['file']['view modes']['media_preview'] = array('label' => t('Preview'), 'custom settings' => TRUE);
-  $entity_info['file']['view modes']['media_small'] = array('label' => t('Small'), 'custom settings' => TRUE);
-  $entity_info['file']['view modes']['media_large'] = array('label' => t('Large'), 'custom settings' => TRUE);
-  $entity_info['file']['view modes']['media_original'] = array('label' => t('Original'), 'custom settings' => TRUE);
+  // For sites that updated from Media 1.x, continue to provide these deprecated
+  // view modes.
+  // @see http://drupal.org/node/1051090
+  if (media_variable_get('show_deprecated_view_modes')) {
+    $entity_info['file']['view modes'] += array(
+      'media_link' => array(
+        'label' => t('Link'),
+        'custom settings' => TRUE,
+      ),
+      'media_original' => array(
+        'label' => t('Original'),
+        'custom settings' => TRUE,
+      ),
+    );
+  }
 }
 
 /**
@@ -1057,7 +1065,7 @@ function media_get_thumbnail_preview($file, $link = NULL) {
     $file->type = file_get_type($file);
   }
 
-  $preview = file_view_file($file, 'media_preview');
+  $preview = file_view_file($file, 'preview');
   $preview['#show_names'] = TRUE;
   $preview['#add_link'] = $link;
   $preview['#theme_wrappers'][] = 'media_thumbnail';
diff --git a/modules/mediafield/mediafield.module b/modules/mediafield/mediafield.module
index fa925d3..dbd4a28 100644
--- a/modules/mediafield/mediafield.module
+++ b/modules/mediafield/mediafield.module
@@ -18,7 +18,7 @@ function mediafield_field_info() {
         'file_extensions' => media_variable_get('file_extensions'),
       ),
       'default_widget' => 'media_generic',
-      'default_formatter' => 'media_large',
+      'default_formatter' => 'media',
       'property_type' => 'field_item_file',
       'property_callbacks' => array('entity_metadata_field_file_callback'),
     ),
diff --git a/tests/media.test b/tests/media.test
index 7dbe4dd..812e428 100644
--- a/tests/media.test
+++ b/tests/media.test
@@ -17,10 +17,6 @@ class MediaTestHelper extends DrupalWebTestCase {
     $type->name = 'test';
     $type->label = "Test";
     $type->base = TRUE;
-//    $type->view_mode_defaults = array(
-//      'media_preview' => 'styles_file_square_thumbnail',
-//      'media_original' => 'file_default',
-//    );
 
     $type->type_callback_args =
     array(
