Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryExportAction.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryExportAction.java	(revision 31379)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryExportAction.java	(revision 31380)
@@ -5,4 +5,5 @@
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.io.IOException;
@@ -10,4 +11,5 @@
 import java.util.List;
 
+import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JOptionPane;
@@ -44,7 +46,16 @@
   @Override
   public void actionPerformed(ActionEvent e) {
-    dialog = new MapillaryExportDialog();
-    JOptionPane pane = new JOptionPane(dialog, JOptionPane.PLAIN_MESSAGE,
-        JOptionPane.OK_CANCEL_OPTION);
+    JOptionPane pane = new JOptionPane();
+
+    JButton ok = new JButton("Ok");
+    ok.addActionListener(new OKAction(pane));
+    JButton cancel = new JButton(tr("Cancel"));
+    cancel.addActionListener(new CancelAction(pane));
+
+
+    dialog = new MapillaryExportDialog(ok);
+    pane.setMessage(dialog);
+    pane.setOptions(new JButton[] { ok, cancel });
+
     JDialog dlg = pane.createDialog(Main.parent, tr("Export images"));
     dlg.setMinimumSize(new Dimension(400, 150));
@@ -95,3 +106,28 @@
   }
 
+  private class OKAction implements ActionListener {
+    private JOptionPane pane;
+
+    public OKAction(JOptionPane pane) {
+      this.pane = pane;
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+      pane.setValue(JOptionPane.OK_OPTION);
+    }
+  }
+
+  private class CancelAction implements ActionListener {
+    private JOptionPane pane;
+
+    public CancelAction(JOptionPane pane) {
+      this.pane = pane;
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+      pane.setValue(JOptionPane.CANCEL_OPTION);
+    }
+  }
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java	(revision 31379)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java	(revision 31380)
@@ -13,6 +13,10 @@
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
+import org.apache.commons.imaging.Imaging;
+import org.apache.commons.imaging.common.ImageMetadata;
 import org.apache.commons.imaging.common.RationalNumber;
+import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata;
 import org.apache.commons.imaging.formats.jpeg.exif.ExifRewriter;
+import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
 import org.apache.commons.imaging.formats.tiff.constants.ExifTagConstants;
 import org.apache.commons.imaging.formats.tiff.constants.GpsTagConstants;
@@ -67,6 +71,8 @@
         } else if (mimg instanceof MapillaryImage)
           finalPath = path + "/" + ((MapillaryImage) mimg).getKey();
-        else
-          finalPath = path + "/" + i;
+        else if (mimg instanceof MapillaryImportedImage)
+          finalPath = path + "/"
+              + ((MapillaryImportedImage) mimg).getFile().getName();
+        ;
         // Creates a temporal file that is going to be deleted after
         // writing the EXIF tags.
@@ -75,15 +81,37 @@
 
         // Write EXIF tags
-        TiffOutputSet outputSet = new TiffOutputSet();
-        TiffOutputDirectory exifDirectory = outputSet
-            .getOrCreateExifDirectory();
+        TiffOutputSet outputSet = null;
+        TiffOutputDirectory exifDirectory = null;
+        // If the image is imported, loads the rest of the EXIF data.
+        if (mimg instanceof MapillaryImportedImage) {
+          final ImageMetadata metadata = Imaging
+              .getMetadata(((MapillaryImportedImage) mimg).getFile());
+          final JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
+          if (null != jpegMetadata) {
+            final TiffImageMetadata exif = jpegMetadata.getExif();
+            if (null != exif) {
+              outputSet = exif.getOutputSet();
+            }
+          }
+        }
+        if (null == outputSet) {
+          outputSet = new TiffOutputSet();
+        }
+        exifDirectory = outputSet.getOrCreateExifDirectory();
+
+        exifDirectory
+            .removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION_REF);
         exifDirectory.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION_REF,
             GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION_REF_VALUE_TRUE_NORTH);
+
+        exifDirectory.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION);
         exifDirectory.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION,
             RationalNumber.valueOf(mimg.getCa()));
-        if (mimg instanceof MapillaryImportedImage) {
+
+        exifDirectory.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
+        if (mimg instanceof MapillaryImportedImage)
           exifDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL,
               ((MapillaryImportedImage) mimg).getDate("yyyy/MM/dd hh:mm:ss"));
-        } else if (mimg instanceof MapillaryImage)
+        else if (mimg instanceof MapillaryImage)
           exifDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL,
               ((MapillaryImage) mimg).getDate("yyyy/MM/dd hh/mm/ss"));
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java	(revision 31379)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java	(revision 31380)
@@ -48,6 +48,10 @@
   public JFileChooser chooser;
   protected String exportDirectory;
+  private JButton ok;
 
-  public MapillaryExportDialog() {
+  public MapillaryExportDialog(JButton ok) {
+    this.ok = ok;
+    ok.setEnabled(false);
+    
     setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
 
@@ -101,5 +105,5 @@
 
   /**
-   * Creates the folder choser GUI.
+   * Creates the folder chooser GUI.
    */
   @Override
@@ -115,4 +119,5 @@
       path.setText(chooser.getSelectedFile().toString());
       this.updateUI();
+      ok.setEnabled(true);
     }
   }
