Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 15227)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 15228)
@@ -185,5 +185,6 @@
             if (wms != null && wms.buildRootUrl() != null) {
                 // TODO: ask user about transparency
-                info = wms.toImageryInfo(getImageryName(), tree.getSelectedLayers(), (List<String>) null, true);
+                info = wms.toImageryInfo(
+                        getImageryName(), tree.getSelectedLayers(), (List<String>) null, (String) formats.getSelectedItem(), true);
             } else {
                 info = new ImageryInfo(getImageryName(), getWmsUrl());
Index: trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 15227)
+++ trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 15228)
@@ -311,8 +311,21 @@
      */
     public String buildGetMapUrl(List<LayerDetails> selectedLayers, List<String> selectedStyles, boolean transparent) {
+        return buildGetMapUrl(selectedLayers, selectedStyles, getPreferredFormat(), transparent);
+    }
+
+    /**
+     * @param selectedLayers selected layers as subset of the tree returned by {@link #getLayers()}
+     * @param selectedStyles selected styles for all selectedLayers
+     * @param format format of the response - one of {@link #getFormats()}
+     * @param transparent whether returned images should contain transparent pixels (if supported by format)
+     * @return URL template for GetMap service
+     * @see #buildGetMapUrl(List, boolean)
+     * @since 15228
+     */
+    public String buildGetMapUrl(List<LayerDetails> selectedLayers, List<String> selectedStyles, String format, boolean transparent) {
         return buildGetMapUrl(
                 selectedLayers.stream().map(LayerDetails::getName).collect(Collectors.toList()),
                 selectedStyles,
-                getPreferredFormat(),
+                format,
                 transparent);
     }
@@ -662,9 +675,12 @@
      * @param selectedLayers layers which are to be used by this imagery layer
      * @param selectedStyles styles that should be used for selectedLayers
+     * @param format format of the response - one of {@link #getFormats()}
      * @param transparent if layer should be transparent
      * @return ImageryInfo object
-     */
-    public ImageryInfo toImageryInfo(String name, List<LayerDetails> selectedLayers, List<String> selectedStyles, boolean transparent) {
-        ImageryInfo i = new ImageryInfo(name, buildGetMapUrl(selectedLayers, selectedStyles, transparent));
+     * @since 15228
+     */
+    public ImageryInfo toImageryInfo(
+            String name, List<LayerDetails> selectedLayers, List<String> selectedStyles, String format, boolean transparent) {
+        ImageryInfo i = new ImageryInfo(name, buildGetMapUrl(selectedLayers, selectedStyles, format, transparent));
         if (selectedLayers != null && !selectedLayers.isEmpty()) {
             i.setServerProjections(getServerProjections(selectedLayers));
