Index: trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 4015)
+++ trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 4016)
@@ -23,5 +23,5 @@
     public static final ImageryLayerInfo instance = new ImageryLayerInfo();
     ArrayList<ImageryInfo> layers = new ArrayList<ImageryInfo>();
-    ArrayList<ImageryInfo> defaultLayers = new ArrayList<ImageryInfo>();
+    static ArrayList<ImageryInfo> defaultLayers = new ArrayList<ImageryInfo>();
 
     private final static String[] DEFAULT_LAYER_SITES = {
@@ -29,14 +29,24 @@
     };
 
-    public void load(boolean clearCache) {
+    private ImageryLayerInfo() {
+    }
+
+    public ImageryLayerInfo(ImageryLayerInfo info) {
+        layers.addAll(info.layers);
+    }
+
+    public void load() {
         layers.clear();
-        defaultLayers.clear();
-        Collection<String> defaults = Main.pref.getCollection(
-                "imagery.layers.default", Collections.<String>emptySet());
         for(Collection<String> c : Main.pref.getArray("imagery.layers",
                 Collections.<Collection<String>>emptySet())) {
             add(new ImageryInfo(c));
         }
+        Collections.sort(layers);
+    }
 
+    public void loadDefaults(boolean clearCache) {
+        defaultLayers.clear();
+        Collection<String> defaults = Main.pref.getCollection(
+                "imagery.layers.default", Collections.<String>emptySet());
         ArrayList<String> defaultsSave = new ArrayList<String>();
         for(String source : Main.pref.getCollection("imagery.layers.sites", Arrays.asList(DEFAULT_LAYER_SITES)))
@@ -97,9 +107,7 @@
         }
 
+        Collections.sort(defaultLayers);
         Main.pref.putCollection("imagery.layers.default", defaultsSave.size() > 0
                 ? defaultsSave : defaults);
-        Collections.sort(layers);
-        Collections.sort(defaultLayers);
-        save();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(revision 4015)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ImageryPreference.java	(revision 4016)
@@ -71,4 +71,5 @@
     }
     ImageryProvidersPanel imageryProviders;
+    ImageryLayerInfo layerInfo;
 
     static ImagerySettingsMigration settingsMigration;
@@ -269,5 +270,6 @@
         JPanel p = gui.createPreferenceTab("imagery", tr("Imagery Preferences"), tr("Modify list of imagery layers displayed in the Imagery menu"));
         JTabbedPane pane = new JTabbedPane();
-        imageryProviders = new ImageryProvidersPanel(gui, ImageryLayerInfo.instance);
+        layerInfo = new ImageryLayerInfo(ImageryLayerInfo.instance);
+        imageryProviders = new ImageryProvidersPanel(gui, layerInfo);
         pane.add(imageryProviders);
         pane.add(buildSettingsPanel(gui));
@@ -308,5 +310,6 @@
     public boolean ok() {
         boolean restartRequired = false;
-        ImageryLayerInfo.instance.save();
+        layerInfo.save();
+        ImageryLayerInfo.instance.load();
         Main.main.menu.imageryMenu.refreshImageryMenu();
         Main.main.menu.imageryMenu.refreshOffsetMenu();
@@ -567,5 +570,5 @@
 
             public void actionPerformed(ActionEvent evt) {
-                layerInfo.load(true);
+                layerInfo.loadDefaults(true);
                 modeldef.fireTableDataChanged();
             }
@@ -857,5 +860,6 @@
             settingsMigration = null;
         }
-        ImageryLayerInfo.instance.load(false);
+        ImageryLayerInfo.instance.load();
+        ImageryLayerInfo.instance.loadDefaults(false);
         OffsetBookmark.loadBookmarks();
         Main.main.menu.imageryMenu.refreshImageryMenu();
