diff --git a/src/imports/qtcanvas3d/canvas3d.cpp b/src/imports/qtcanvas3d/canvas3d.cpp
index c84bc18649bc5ae1effb032d24d5ca256da0eb8e..439fa50a9bec5341914b181448cca9a73a90754f 100644
--- a/src/imports/qtcanvas3d/canvas3d.cpp
+++ b/src/imports/qtcanvas3d/canvas3d.cpp
@@ -537,6 +537,15 @@ void Canvas::createFBOs()
     QOpenGLFramebufferObject *renderFbo = m_renderFbo;
     QOpenGLFramebufferObject *antialiasFbo = m_antialiasFbo;
 
+    QOpenGLFramebufferObject *dummyFbo = 0;
+    if (!m_renderFbo) {
+        // Create a dummy FBO to work around a weird GPU driver bug on some platforms that
+        // causes the first FBO created to get corrupted in some cases.
+        dummyFbo = new QOpenGLFramebufferObject(m_fboSize.width(),
+                                                m_fboSize.height(),
+                                                m_fboFormat);
+    }
+
     // Create FBOs
     qCDebug(canvas3drendering).nospace() << "Canvas3D::" << __FUNCTION__
                                          << " Creating front and back FBO's with"
@@ -590,6 +599,9 @@ void Canvas::createFBOs()
         bindCurrentRenderTarget();
         emitNeedRender();
     }
+
+    // Get rid of the dummy FBO, it has served its purpose
+    delete dummyFbo;
 }
 
 /*!