--- /home/kg/workspace/qtbase-opensource-src-5.4.1+dfsg-orig/src/gui/opengl/qopenglframebufferobject.cpp 2015-02-16 22:56:47.000000000 -0600 +++ /home/kg/workspace/qtbase-opensource-src-5.4.1+dfsg/src/gui/opengl/qopenglframebufferobject.cpp 2015-04-15 09:21:35.703052810 -0500 @@ -1144,10 +1144,15 @@ const bool supports_bgra = context->isOpenGLES() ? context->hasExtension(QByteArrayLiteral("GL_EXT_read_format_bgra")) : context->hasExtension(QByteArrayLiteral("GL_EXT_bgra")); - if (supports_bgra) { - QImage img(size, include_alpha ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32); - funcs->glReadPixels(0, 0, w, h, GL_BGRA, GL_UNSIGNED_BYTE, img.bits()); - return img; + // check on Imagination Rogue with DDK1.3, BGRA broken + QByteArray gpuStr = reinterpret_cast(funcs->glGetString(GL_RENDERER)); + QByteArray verStr = reinterpret_cast(funcs->glGetString(GL_VERSION)); + if( !gpuStr.contains("PowerVR Rogue G6200") && !verStr.contains("1.3")){ + if (supports_bgra) { + QImage img(size, include_alpha ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32); + funcs->glReadPixels(0, 0, w, h, GL_BGRA, GL_UNSIGNED_BYTE, img.bits()); + return img; + } } #endif QImage rgbaImage(size, include_alpha ? QImage::Format_RGBA8888_Premultiplied : QImage::Format_RGBX8888);