Index: trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 4851)
+++ trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 4852)
@@ -167,5 +167,5 @@
             if (file != null) {
                 info.backupFiles.add(file);
-                new OsmExporter().exportData(file, info.layer);
+                new OsmExporter().exportData(file, info.layer, true /* no backup with appended ~ */);
             }
         }
Index: trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 4851)
+++ trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 4852)
@@ -41,6 +41,10 @@
     @Override
     public void exportData(File file, Layer layer) throws IOException {
+        exportData(file, layer, false);
+    }
+
+    public void exportData(File file, Layer layer, boolean noBackup) throws IOException {
         if (layer instanceof OsmDataLayer) {
-            save(file, (OsmDataLayer) layer);
+            save(file, (OsmDataLayer) layer, noBackup);
         } else
             throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer. Got ''{0}''.", layer
@@ -52,5 +56,5 @@
     }
 
-    private void save(File file, OsmDataLayer layer) {
+    private void save(File file, OsmDataLayer layer, boolean noBackup) {
         File tmpFile = null;
         try {
@@ -79,6 +83,8 @@
             }
             // FIXME - how to close?
-            if (!Main.pref.getBoolean("save.keepbackup", false) && (tmpFile != null)) {
-                tmpFile.delete();
+            if (noBackup || !Main.pref.getBoolean("save.keepbackup", false)) {
+                if (tmpFile != null) {
+                    tmpFile.delete();
+                }
             }
             layer.onPostSaveToFile();
