diff --git a/src/multimediawidgets/qpaintervideosurface.cpp b/src/multimediawidgets/qpaintervideosurface.cpp
index 8536ba4d1344bdac65ae7c77648a5f7df5bfdeb3..d9ad0438d4762c662210c7100f80a902c74399e4 100644
--- a/src/multimediawidgets/qpaintervideosurface.cpp
+++ b/src/multimediawidgets/qpaintervideosurface.cpp
@@ -773,6 +773,8 @@ QAbstractVideoSurface::Error QVideoSurfaceArbFpPainter::start(const QVideoSurfac
     if (!program) {
         error = QAbstractVideoSurface::UnsupportedFormatError;
     } else {
+        while (glGetError() != GL_NO_ERROR) { } // clear previous unrelated errors
+
         glGenProgramsARB(1, &m_programId);
 
         GLenum glError = glGetError();