Index: /trunk/src/org/openstreetmap/josm/gui/preferences/MapPaintPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/MapPaintPreference.java	(revision 3868)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/MapPaintPreference.java	(revision 3869)
@@ -14,6 +14,4 @@
 import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.event.ChangeEvent;
@@ -24,4 +22,6 @@
 import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Predicate;
+import org.openstreetmap.josm.tools.Utils;
 
 public class MapPaintPreference implements PreferenceSetting {
@@ -178,4 +178,7 @@
                 put(ls);
             }
+            if (insertNewDefaults(ls)) {
+                put(ls);
+            }
             return ls;
         }
@@ -196,4 +199,45 @@
         }
 
+        /**
+         * If the selection of default styles changes in future releases, add
+         * the new entries to the user-configured list. Remember the known URLs,
+         * so an item that was deleted explicitly is not added again.
+         */
+        private boolean insertNewDefaults(List<SourceEntry> list) {
+            boolean changed = false;
+            
+            Collection<String> knownDefaults = new TreeSet<String>(Main.pref.getCollection("mappaint.style.known-defaults"));
+
+            Collection<ExtendedSourceEntry> defaults = getDefault();
+            int insertionIdx = 0;
+            for (final SourceEntry def : defaults) {
+                int i = Utils.indexOf(list,
+                        new Predicate<SourceEntry>() {
+                            @Override
+                            public boolean evaluate(SourceEntry se) {
+                                return Utils.equal(def.url, se.url);
+                            }
+                        });
+                if (i == -1 && !knownDefaults.contains(def.url)) {
+                    list.add(insertionIdx, def);
+                    insertionIdx++;
+                    changed = true;
+                } else {
+                    if (i > insertionIdx) {
+                        insertionIdx = i + 1;
+                    }
+                }
+            }
+
+            for (SourceEntry def : defaults) {
+                knownDefaults.add(def.url);
+            }
+            if (Main.pref.putCollection("mappaint.style.known-defaults", knownDefaults)) {
+                changed = true;
+            }
+
+            return changed;
+        }
+
         @Override
         public Collection<ExtendedSourceEntry> getDefault() {
Index: /trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 3868)
+++ /trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 3869)
@@ -39,4 +39,14 @@
         }
         return null;
+    }
+
+    public static <T> int indexOf(Iterable<? extends T> collection, Predicate<? super T> predicate) {
+        int i = 0;
+        for (T item : collection) {
+            if (predicate.evaluate(item))
+                return i;
+            i++;
+        }
+        return -1;
     }
 
