diff --git a/src/org/openstreetmap/josm/actions/GpxExportAction.java b/src/org/openstreetmap/josm/actions/GpxExportAction.java
index 237ce17..50a16d5 100644
--- a/src/org/openstreetmap/josm/actions/GpxExportAction.java
+++ b/src/org/openstreetmap/josm/actions/GpxExportAction.java
@@ -82,7 +82,7 @@ public class GpxExportAction extends DiskAccessAction {
             throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.",
                     layer.getClass().getName()));
 
-        File file = createAndOpenSaveFileChooser(tr("Export GPX file"), GpxImporter.FILE_FILTER);
+        File file = createAndOpenSaveFileChooser(tr("Export GPX file"), GpxImporter.getFileFilter());
         if (file == null)
             return;
 
diff --git a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
index 908320f..6c54410 100644
--- a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
@@ -362,7 +362,7 @@ public class GpxLayer extends Layer {
 
     @Override
     public File createAndOpenSaveFileChooser() {
-        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save GPX file"), GpxImporter.FILE_FILTER);
+        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save GPX file"), GpxImporter.getFileFilter());
     }
 
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index 55a5f63..391e5c2 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -964,7 +964,8 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
     @Override
     public File createAndOpenSaveFileChooser() {
-        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save OSM file"), "osm");
+        String extension = Main.pref.get("save.extension.osm", "osm");
+        return SaveActionBase.createAndOpenSaveFileChooser(tr("Save OSM file"), extension);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/io/GpxExporter.java b/src/org/openstreetmap/josm/io/GpxExporter.java
index 3da86ff..0825eee 100644
--- a/src/org/openstreetmap/josm/io/GpxExporter.java
+++ b/src/org/openstreetmap/josm/io/GpxExporter.java
@@ -62,7 +62,7 @@ public class GpxExporter extends FileExporter implements GpxConstants {
      * Constructs a new {@code GpxExporter}.
      */
     public GpxExporter() {
-        super(GpxImporter.FILE_FILTER);
+        super(GpxImporter.getFileFilter());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/io/GpxImporter.java b/src/org/openstreetmap/josm/io/GpxImporter.java
index f7a400e..b79cce5 100644
--- a/src/org/openstreetmap/josm/io/GpxImporter.java
+++ b/src/org/openstreetmap/josm/io/GpxImporter.java
@@ -25,12 +25,6 @@ import org.xml.sax.SAXException;
 public class GpxImporter extends FileImporter {
 
     /**
-     * The GPX file filter (*.gpx and *.gpx.gz files).
-     */
-    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
-            "gpx", "gpx", tr("GPX Files"), true);
-
-    /**
      * Utility class containing imported GPX and marker layers, and a task to run after they are added to MapView.
      */
     public static class GpxImporterData {
@@ -70,7 +64,15 @@ public class GpxImporter extends FileImporter {
      * Constructs a new {@code GpxImporter}.
      */
     public GpxImporter() {
-        super(FILE_FILTER);
+        super(getFileFilter());
+    }
+
+    /**
+     * Returns a GPX file filter (*.gpx and *.gpx.gz files).
+     */
+    public static ExtensionFileFilter getFileFilter() {
+        return ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "gpx", Main.pref.get("save.extension.gpx", "gpx"), tr("GPX Files"), true);
     }
 
     @Override
