diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc
index e9a1fb3ce1c9f5fbf93f3a956f59c4ff8f20445f..c5a35921bde28c674c0fff65b3ef20f484c8bf34 100644
--- a/src/QGCApplication.cc
+++ b/src/QGCApplication.cc
@@ -476,10 +476,13 @@ void QGCApplication::criticalMessageBoxOnMainThread(const QString& title, const
 
 void QGCApplication::saveTempFlightDataLogOnMainThread(QString tempLogfile)
 {
+    QString defaultSuffix = "mavlink";
     QString saveFilename = QGCFileDialog::getSaveFileName(MainWindow::instance(),
                                                           tr("Select file to save Flight Data Log"),
                                                           qgcApp()->mavlinkLogFilesLocation(),
-                                                          tr("Flight Data Log (*.mavlink)"));
+                                                          tr("Flight Data Log (*.mavlink)"),
+                                                          0,0,
+                                                          &defaultSuffix);
     if (!saveFilename.isEmpty()) {
         QFile::copy(tempLogfile, saveFilename);
     }
diff --git a/src/QGCFileDialog.cc b/src/QGCFileDialog.cc
index b78a441450ba16f8b076640f3df693a315d455a5..3d0e72d28a69f21527e9eb9fb41df12bc2bde2c7 100644
--- a/src/QGCFileDialog.cc
+++ b/src/QGCFileDialog.cc
@@ -88,7 +88,8 @@ QString QGCFileDialog::getSaveFileName(QWidget* parent,
                                   const QString& dir,
                                   const QString& filter,
                                   QString* selectedFilter,
-                                  Options options)
+                                  Options options,
+                                  QString* defaultSuffix)
 {
     _validate(selectedFilter, options);
     
@@ -98,7 +99,17 @@ QString QGCFileDialog::getSaveFileName(QWidget* parent,
     } else
 #endif
     {
-        return QFileDialog::getSaveFileName(parent, caption, dir, filter, selectedFilter, options);
+        QFileDialog dlg(parent, caption, dir, filter);
+        if (selectedFilter)
+            dlg.selectNameFilter(*selectedFilter);
+        if (options)
+            dlg.setOptions(options);
+        if (defaultSuffix)
+            dlg.setDefaultSuffix(*defaultSuffix);
+        if (dlg.exec())
+            if (dlg.selectedFiles().count())
+                return dlg.selectedFiles().first();
+        return QString("");
     }
 }
 
diff --git a/src/QGCFileDialog.h b/src/QGCFileDialog.h
index b8ff76fa7776b03feaa57bcef6699c714dea1507..5cfd9c633e80581eaed9a22b2d2d4696657a9c70 100644
--- a/src/QGCFileDialog.h
+++ b/src/QGCFileDialog.h
@@ -55,12 +55,16 @@ public:
                                         QString* selectedFilter = 0,
                                         Options options = 0);
     
+    /// @brief getSaveFileName with an extra (optional) argument to define the extension (suffix) to
+    ///        be added if none is given by the user. If set, don't add the preceding period (i.e.
+    ///        use "mavlink" instead of ".mavlink")
     static QString getSaveFileName(QWidget* parent = 0,
                                    const QString& caption = QString(),
                                    const QString& dir = QString(),
                                    const QString& filter = QString(),
                                    QString* selectedFilter = 0,
-                                   Options options = 0);
+                                   Options options = 0,
+                                   QString* defaultSuffix = 0);
     
 private slots:
     /// @brief The exec slot is private becasue when only want QGCFileDialog users to use the static methods. Otherwise it will break
diff --git a/src/qgcunittest/UnitTest.cc b/src/qgcunittest/UnitTest.cc
index 33ae73ef4f446f9c8a25f3cc306099c2eefc87c2..96ca351f119bbc7b85f293a15631576447334082 100644
--- a/src/qgcunittest/UnitTest.cc
+++ b/src/qgcunittest/UnitTest.cc
@@ -345,16 +345,15 @@ QString UnitTest::_getSaveFileName(QWidget* parent,
                                    const QString& dir,
                                    const QString& filter,
                                    QString* selectedFilter,
-                                   QFileDialog::Options options)
+                                   QFileDialog::Options options,
+                                   QString* defaultSuffix)
 {
     Q_UNUSED(parent);
     Q_UNUSED(caption);
     Q_UNUSED(dir);
     Q_UNUSED(filter);
     Q_UNUSED(options);
-    
-    // Support for selectedFilter is not yet implemented
-    Q_ASSERT(selectedFilter == NULL);
-    
+    Q_UNUSED(defaultSuffix);
+
     return _fileDialogResponseSingle(getSaveFileName);
 }
diff --git a/src/qgcunittest/UnitTest.h b/src/qgcunittest/UnitTest.h
index 93ff1679d5ed626e14acff0b87e7eb3a8037d61d..44e39ea6c1cbedc1090a3f0143b93e8ae27c76d6 100644
--- a/src/qgcunittest/UnitTest.h
+++ b/src/qgcunittest/UnitTest.h
@@ -142,7 +142,8 @@ private:
                                     const QString& dir,
                                     const QString& filter,
                                     QString* selectedFilter,
-                                    QFileDialog::Options options);
+                                    QFileDialog::Options options,
+                                    QString* defaultSuffix);
     
     static QString _fileDialogResponseSingle(enum FileDialogType type);