diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp
index 0f24076cb5..ea4c6a76d9 100644
--- a/src/Gui/Application.cpp
+++ b/src/Gui/Application.cpp
@@ -1923,6 +1923,15 @@ void Application::runApplication(void)
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
#endif
+ // Use software rendering for OpenGL
+#if QT_VERSION >= 0x050400
+ ParameterGrp::handle hOpenGL = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/OpenGL");
+ bool useSoftwareOpenGL = hOpenGL->GetBool("UseSoftwareOpenGL", false);
+ if (useSoftwareOpenGL) {
+ QApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
+ }
+#endif // QT_VERSION >= 0x050400
+
// A new QApplication
Base::Console().Log("Init: Creating Gui::Application and QApplication\n");
diff --git a/src/Gui/DlgSettings3DView.ui b/src/Gui/DlgSettings3DView.ui
index 65cc2d9fe6..9df215caba 100644
--- a/src/Gui/DlgSettings3DView.ui
+++ b/src/Gui/DlgSettings3DView.ui
@@ -108,6 +108,24 @@ will be shown at the lower left corner in opened files
Rendering
+ -
+
+
+ This option is useful for troubleshooting graphics card and driver problems.
+
+Changing this option requires a restart of the application.
+
+
+ Use software OpenGL
+
+
+ UseSoftwareOpenGL
+
+
+ OpenGL
+
+
+
-
diff --git a/src/Gui/DlgSettings3DViewImp.cpp b/src/Gui/DlgSettings3DViewImp.cpp
index 134aae1336..b1fe1d71aa 100644
--- a/src/Gui/DlgSettings3DViewImp.cpp
+++ b/src/Gui/DlgSettings3DViewImp.cpp
@@ -93,6 +93,7 @@ void DlgSettings3DViewImp::saveSettings()
ui->CheckBox_WbByTab->onSave();
ui->CheckBox_ShowFPS->onSave();
ui->spinPickRadius->onSave();
+ ui->CheckBox_use_SW_OpenGL->onSave();
ui->CheckBox_useVBO->onSave();
ui->FloatSpinBox_EyeDistance->onSave();
ui->checkBoxBacklight->onSave();
@@ -109,6 +110,7 @@ void DlgSettings3DViewImp::loadSettings()
ui->CheckBox_WbByTab->onRestore();
ui->CheckBox_ShowFPS->onRestore();
ui->spinPickRadius->onRestore();
+ ui->CheckBox_use_SW_OpenGL->onRestore();
ui->CheckBox_useVBO->onRestore();
ui->FloatSpinBox_EyeDistance->onRestore();
ui->checkBoxBacklight->onRestore();