diff --git a/GUI/coregui/mainwindow/newprojectdialog.cpp b/GUI/coregui/mainwindow/newprojectdialog.cpp
index 47012f7a2178d8ef063c9635ad64fb5d0ce37486..5c99f5ecf89e3a477fda33cecac0bc651f4b64cc 100644
--- a/GUI/coregui/mainwindow/newprojectdialog.cpp
+++ b/GUI/coregui/mainwindow/newprojectdialog.cpp
@@ -20,7 +20,7 @@
 #include <QPushButton>
 #include <QVBoxLayout>
 
-NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirectory,
+NewProjectDialog::NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory,
                                    const QString& projectName)
     : QDialog(parent)
     , m_projectNameEdit(0)
@@ -34,7 +34,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
 
 {
     setMinimumSize(480, 280);
-    setWindowTitle("New project");
+    setWindowTitle(mode == CREATE ? "New project" : "Save project");
 
     QLabel* nameLabel = new QLabel("Project name:");
     m_projectNameEdit = new QLineEdit;
@@ -43,7 +43,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
             SLOT(checkIfProjectNameIsValid(QString)));
     nameLabel->setBuddy(m_projectNameEdit);
 
-    QLabel* parentDirLabel = new QLabel("Create in:");
+    QLabel* parentDirLabel = new QLabel(mode == CREATE ? "Create in:" : "Save in:");
     m_workDirEdit = new QLineEdit;
     m_workDirEdit->setText(QDir::homePath());
     connect(m_workDirEdit, SIGNAL(textEdited(QString)), this,
@@ -55,7 +55,7 @@ NewProjectDialog::NewProjectDialog(QWidget* parent, const QString& workingDirect
 
     m_warningLabel = new QLabel();
 
-    m_createButton = new QPushButton("Create");
+    m_createButton = new QPushButton(mode == CREATE ? "Create" : "Save");
     connect(m_createButton, SIGNAL(clicked()), this, SLOT(createProjectDir()));
     m_createButton->setDefault(true);
     m_cancelButton = new QPushButton("Cancel");
diff --git a/GUI/coregui/mainwindow/newprojectdialog.h b/GUI/coregui/mainwindow/newprojectdialog.h
index 9faa2723941a6afd42ae6fab7b3bd1a1a30c4887..e5d1f661a92771ae8f22618c9d2ccfc89e40e902 100644
--- a/GUI/coregui/mainwindow/newprojectdialog.h
+++ b/GUI/coregui/mainwindow/newprojectdialog.h
@@ -24,7 +24,9 @@ class QLabel;
 class NewProjectDialog : public QDialog {
     Q_OBJECT
 public:
-    NewProjectDialog(QWidget* parent = 0, const QString& workingDirectory = "",
+    enum Mode { CREATE, SAVE };
+
+    NewProjectDialog(QWidget* parent, Mode mode, const QString& workingDirectory = "",
                      const QString& projectName = "");
 
     QString getWorkingDirectory() const;
diff --git a/GUI/coregui/mainwindow/projectmanager.cpp b/GUI/coregui/mainwindow/projectmanager.cpp
index 803767a699bc38767313d81ca578f7b3915978ed..69dc2789d2a8381049264283670aed85057450c7 100644
--- a/GUI/coregui/mainwindow/projectmanager.cpp
+++ b/GUI/coregui/mainwindow/projectmanager.cpp
@@ -175,12 +175,11 @@ void ProjectManager::newProject() {
     if (!closeCurrentProject())
         return;
 
-    QString projectFileName = acquireProjectFileName();
+    createNewProject();
 
-    if (!projectFileName.isEmpty()) {
-        createNewProject();
+    QString projectFileName = acquireProjectFileName(false);
+    if (!projectFileName.isEmpty())
         saveProject(projectFileName);
-    }
 }
 
 //! Processes close current project request. Call save/discard/cancel dialog, if necessary.
@@ -228,7 +227,7 @@ bool ProjectManager::saveProject(QString projectFileName) {
         if (m_project_document->hasValidNameAndPath())
             projectFileName = m_project_document->projectFileName();
         else
-            projectFileName = acquireProjectFileName();
+            projectFileName = acquireProjectFileName(true);
     }
 
     if (projectFileName.isEmpty())
@@ -255,7 +254,7 @@ bool ProjectManager::saveProject(QString projectFileName) {
 //! Processes 'save project as' request.
 
 bool ProjectManager::saveProjectAs() {
-    QString projectFileName = acquireProjectFileName();
+    QString projectFileName = acquireProjectFileName(true);
 
     if (projectFileName.isEmpty())
         return false;
@@ -269,6 +268,8 @@ void ProjectManager::openProject(QString fileName) {
     if (!closeCurrentProject())
         return;
 
+    createNewProject();
+
     if (fileName.isEmpty()) {
         fileName =
             QFileDialog::getOpenFileName(m_mainWindow, "Open project file", workingDirectory(),
@@ -276,7 +277,7 @@ void ProjectManager::openProject(QString fileName) {
         if (fileName.isEmpty())
             return;
     }
-    createNewProject();
+
     loadProject(fileName);
 
     if (m_project_document->isReady()) {
@@ -334,10 +335,12 @@ void ProjectManager::loadProject(const QString& projectFileName) {
     QApplication::restoreOverrideCursor();
 }
 
-//! Returns project file name from dialog.
+//! Returns project file name from dialog. Returns empty string if dialog was canceled.
 
-QString ProjectManager::acquireProjectFileName() {
-    NewProjectDialog dialog(m_mainWindow, workingDirectory(), untitledProjectName());
+QString ProjectManager::acquireProjectFileName(bool forSaveAs) {
+    NewProjectDialog dialog(m_mainWindow,
+                            forSaveAs ? NewProjectDialog::SAVE : NewProjectDialog::CREATE,
+                            workingDirectory(), untitledProjectName());
 
     if (dialog.exec() != QDialog::Accepted)
         return "";
diff --git a/GUI/coregui/mainwindow/projectmanager.h b/GUI/coregui/mainwindow/projectmanager.h
index ed9b397aaa486f1b082e8fe843831de94542ed3f..dfefcd3786ae6ae2e8b10dba5372283db3a218c2 100644
--- a/GUI/coregui/mainwindow/projectmanager.h
+++ b/GUI/coregui/mainwindow/projectmanager.h
@@ -61,7 +61,7 @@ private:
     void createNewProject();
     void deleteCurrentProject();
     void loadProject(const QString& projectFileName);
-    QString acquireProjectFileName();
+    QString acquireProjectFileName(bool forSaveAs);
     void addToRecentProjects();
 
     QString workingDirectory();