diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
index 5bee29afef1909e40588214132cbab0f770e71f7..bffb0eb4e83e4ce88d4d47aa7880652f8786dfa1 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
@@ -39,6 +39,10 @@
 #include <QtPlatformHeaders/QEGLNativeContext>
 #include <QDebug>
 
+#ifdef Q_OS_ANDROID
+#include <QtCore/private/qjnihelpers_p.h>
+#endif
+
 QT_BEGIN_NAMESPACE
 
 /*!
@@ -294,6 +298,14 @@ void QEGLPlatformContext::updateFormatFromGL()
                 QByteArray version = QByteArray(reinterpret_cast<const char *>(s));
                 int major, minor;
                 if (QPlatformOpenGLContext::parseOpenGLVersion(version, major, minor)) {
+#ifdef Q_OS_ANDROID
+                    // Some Android 4.2.2 devices report OpenGL ES 3.0 without the functions being available.
+                    static int apiLevel = QtAndroidPrivate::androidSdkVersion();
+                    if (apiLevel <= 17 && major >= 3) {
+                        major = 2;
+                        minor = 0;
+                    }
+#endif
                     m_format.setMajorVersion(major);
                     m_format.setMinorVersion(minor);
                 }