diff --git a/apps/launcher/graphicspage.cpp b/apps/launcher/graphicspage.cpp
index ffa4d5d59..a3572960d 100644
--- a/apps/launcher/graphicspage.cpp
+++ b/apps/launcher/graphicspage.cpp
@@ -183,7 +183,7 @@ void GraphicsPage::setupOgre()
 
         qCritical("Error creating Ogre::Root, the error reported was:\n %s", qPrintable(ogreError));
 
-        std::exit(1);
+        QApplication::exit(1);
     }
 
     // Get the available renderers and put them in the combobox
@@ -216,7 +216,7 @@ void GraphicsPage::setupOgre()
         Please make sure the plugins.cfg file exists and contains a valid rendering plugin.
"));
         msgBox.exec();
 
-        std::exit(1);
+        QApplication::exit(1);
     }
 
     // Now fill the GUI elements
@@ -388,7 +388,7 @@ void GraphicsPage::writeConfig()
 
     if (!ogreError.isEmpty()) {
         QMessageBox msgBox;
-        msgBox.setWindowTitle("Error validating configuration");
+        msgBox.setWindowTitle("Error validating Ogre configuration");
         msgBox.setIcon(QMessageBox::Critical);
         msgBox.setStandardButtons(QMessageBox::Ok);
         msgBox.setText(tr("
A problem occured while validating the graphics options
 \
@@ -401,11 +401,33 @@ void GraphicsPage::writeConfig()
 
         qCritical("Error validating configuration");
 
-        std::exit(1);
+        QApplication::exit(1);
     }
 
     // Write the settings to the config file
-    mOgre->saveConfig();
+
+
+    try
+    {
+        mOgre->saveConfig();
+    }
+    catch(Ogre::Exception &ex)
+    {
+        QString ogreError = QString::fromStdString(ex.getFullDescription().c_str());
+        QMessageBox msgBox;
+        msgBox.setWindowTitle("Error writing Ogre configuration file");
+        msgBox.setIcon(QMessageBox::Critical);
+        msgBox.setStandardButtons(QMessageBox::Ok);
+        msgBox.setText(tr("
Could not write the graphics configuration
 \
+        Please make sure you have the right permissions and try again.
 \
+        Press \"Show Details...\" for more information.
"));
+        msgBox.setDetailedText(ogreError);
+        msgBox.exec();
+
+        qCritical("Error saving Ogre configuration, the error reported was:\n %s", qPrintable(ogreError));
+
+        QApplication::exit(1);
+    }
 
 }
 
diff --git a/apps/launcher/maindialog.cpp b/apps/launcher/maindialog.cpp
index 31313e7a3..4ec8b309c 100644
--- a/apps/launcher/maindialog.cpp
+++ b/apps/launcher/maindialog.cpp
@@ -340,7 +340,7 @@ void MainDialog::writeConfig()
                         Please make sure you have the right permissions and try again.
").arg(file.fileName()));
         msgBox.exec();
 
-        std::exit(1);
+        QApplication::exit(1);
     }
 
     QTextStream in(&file);
@@ -366,7 +366,7 @@ void MainDialog::writeConfig()
                         Please make sure you have the right permissions and try again.
").arg(file.fileName()));
         msgBox.exec();
 
-        std::exit(1);;
+        QApplication::exit(1);
     }
 
     file.write(buffer);