diff --git a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
index de44d7b..202bca7 100644
--- a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
+++ b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
@@ -221,6 +221,13 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
             if (extension.equals(exporter.filter.getDefaultExtension()))
                 return exporter.filter;
         }
+        // if extension did not match defaultExtension of any exporter,
+        // scan all supported extensions
+        File file = new File("file." + extension);
+        for (FileExporter exporter : exporters) {
+            if (exporter.filter.accept(file))
+                return exporter.filter;
+        }
         return new AllFormatsImporter().filter;
     }
 
@@ -236,6 +243,7 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
      */
     public static void applyChoosableImportFileFilters(AbstractFileChooser fileChooser, String extension, boolean allTypes) {
         for (ExtensionFileFilter filter: getImportExtensionFileFilters()) {
+
             if (allTypes || filter.acceptName("file."+extension)) {
                 fileChooser.addChoosableFileFilter(filter);
             }
diff --git a/src/org/openstreetmap/josm/actions/SaveActionBase.java b/src/org/openstreetmap/josm/actions/SaveActionBase.java
index cc8a6f7..0eebdae 100644
--- a/src/org/openstreetmap/josm/actions/SaveActionBase.java
+++ b/src/org/openstreetmap/josm/actions/SaveActionBase.java
@@ -168,10 +168,10 @@ public abstract class SaveActionBase extends DiskAccessAction {
             }
             // No filefilter accepts current filename, add default extension
             String fn = file.getPath();
-            if (ff instanceof ExtensionFileFilter) {
-                fn += '.' + ((ExtensionFileFilter) ff).getDefaultExtension();
-            } else if (extension != null) {
+            if (extension != null) {
                 fn += '.' + extension;
+            } else if (ff instanceof ExtensionFileFilter) {
+                fn += '.' + ((ExtensionFileFilter) ff).getDefaultExtension();
             }
             file = new File(fn);
             // Confirm overwrite, except for OSX native file dialogs which already ask for confirmation (see #11362)
