Index: /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 7965)
+++ /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 7966)
@@ -11,9 +11,8 @@
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
 import javax.swing.Action;
 import javax.swing.JComponent;
@@ -21,8 +20,6 @@
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
-import javax.swing.MenuElement;
 import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
-
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AddImageryLayerAction;
@@ -46,4 +43,17 @@
 public class ImageryMenu extends JMenu implements LayerChangeListener {
 
+    /**
+     * Compare ImageryInfo objects alphabetically by name.
+     *
+     * ImageryInfo objects are normally sorted by country code first
+     * (for the preferences). We don't want this in the imagery menu.
+     */
+    public static Comparator<ImageryInfo> alphabeticImageryComparator = new Comparator<ImageryInfo>() {
+        @Override
+        public int compare(ImageryInfo ii1, ImageryInfo ii2) {
+            return ii1.getName().toLowerCase().compareTo(ii2.getName().toLowerCase());
+        }
+    };
+
     private Action offsetAction = new JosmAction(
             tr("Imagery offset"), "mapmode/adjustimg", tr("Adjust imagery offset"), null, false, false) {
@@ -134,5 +144,7 @@
 
         // for each configured ImageryInfo, add a menu entry.
-        for (final ImageryInfo u : ImageryLayerInfo.instance.getLayers()) {
+        final List<ImageryInfo> savedLayers = new ArrayList<>(ImageryLayerInfo.instance.getLayers());
+        Collections.sort(savedLayers, alphabeticImageryComparator);
+        for (final ImageryInfo u : savedLayers) {
             addDynamic(new AddImageryLayerAction(u));
         }
@@ -143,5 +155,5 @@
             MapView mv = Main.map.mapView;
             LatLon pos = mv.getProjection().eastNorth2latlon(mv.getCenter());
-            final Set<ImageryInfo> inViewLayers = new TreeSet<>();
+            final List<ImageryInfo> inViewLayers = new ArrayList<>();
 
             for (ImageryInfo i : ImageryLayerInfo.instance.getDefaultLayers()) {
@@ -167,4 +179,5 @@
             }
             if (!inViewLayers.isEmpty()) {
+                Collections.sort(inViewLayers, alphabeticImageryComparator);
                 addDynamicSeparator();
                 for (ImageryInfo i : inViewLayers) {
