diff --git a/media.install b/media.install
index 04f0e8a..99df041 100644
--- a/media.install
+++ b/media.install
@@ -510,32 +510,31 @@ function media_update_7016() {
   // Update the field_bundle_settings configuration variable: move media bundle
   // settings to file bundles, and move settings of the old self-referencing
   // file field to the new file pseudo-field.
-  $settings = variable_get('field_bundle_settings', array());
-  if (!isset($settings['file'])) {
-    $settings['file'] = array();
-  }
-  if (isset($settings['media'])) {
-    $settings['file'] = array_merge($settings['file'], $settings['media']);
-    unset($settings['media']);
-  }
   foreach ($instances as $instance) {
     if ($instance['field_name'] === 'file' && !$instance['deleted']) {
+      $file_settings = field_bundle_settings('file', $instance['bundle']);
+      $media_settings = field_bundle_settings('media', $instance['bundle']);
+      $file_settings = array_merge($file_settings, $media_settings);
       if (isset($instance['widget']['weight'])) {
-        $settings['file'][$instance['bundle']]['extra_fields']['form']['file']['weight'] = $instance['widget']['weight'];
+        $file_settings['extra_fields']['form']['file']['weight'] = $instance['widget']['weight'];
       }
       if (isset($instance['display'])) {
         foreach ($instance['display'] as $view_mode => $display) {
           if (isset($display['weight'])) {
-            $settings['file'][$instance['bundle']]['extra_fields']['display']['file'][$view_mode]['weight'] = $display['weight'];
+            $file_settings['extra_fields']['display']['file'][$view_mode]['weight'] = $display['weight'];
           }
           if (isset($display['type'])) {
-            $settings['file'][$instance['bundle']]['extra_fields']['display']['file'][$view_mode]['visible'] = ($display['type'] != 'hidden');
+            $file_settings['extra_fields']['display']['file'][$view_mode]['visible'] = ($display['type'] != 'hidden');
           }
         }
       }
+      field_bundle_settings('file', $instance['bundle'], $file_settings);
     }
   }
-  variable_set('field_bundle_settings', $settings);
+  // Delete old media bundle settings.
+  db_delete('variable')
+    ->condition('name', db_like('field_bundle_settings_media__') . '%', 'LIKE')
+    ->execute();
 
   // Copy field formatter settings of old self-referencing file field to file
   // pseudo-field formatter settings.
