diff --git a/examples/quick/controls/gallery/src/main.cpp b/examples/quick/controls/gallery/src/main.cpp
index a757f4853bfbf9bcd6469529cfbc00854b38de47..b0d12b85fa14bc7addef7cf5a081c591b9118a1a 100644
--- a/examples/quick/controls/gallery/src/main.cpp
+++ b/examples/quick/controls/gallery/src/main.cpp
@@ -40,10 +40,18 @@
 
 #include "qtquickcontrolsapplication.h"
 #include <QtQml/QQmlApplicationEngine>
+#include <QtGui/QSurfaceFormat>
+#include <QtQuick/QQuickWindow>
 
 int main(int argc, char *argv[])
 {
     QtQuickControlsApplication app(argc, argv);
+    if (QCoreApplication::arguments().contains(QLatin1String("--coreprofile"))) {
+        QSurfaceFormat fmt = QQuickWindow::defaultFormat();
+        fmt.setVersion(4, 4);
+        fmt.setProfile(QSurfaceFormat::CoreProfile);
+        QQuickWindow::setDefaultFormat(fmt);
+    }
     QQmlApplicationEngine engine(QUrl("qrc:/main.qml"));
     return app.exec();
 }
diff --git a/examples/quick/dialogs/systemdialogs/main.cpp b/examples/quick/dialogs/systemdialogs/main.cpp
index fd88220056ce9463fac6c4f7a2f569e1e540ebc2..6d0fef3cd2f0910f75f4586ef44060e2eab8ee55 100644
--- a/examples/quick/dialogs/systemdialogs/main.cpp
+++ b/examples/quick/dialogs/systemdialogs/main.cpp
@@ -40,10 +40,18 @@
 
 #include "qtquickcontrolsapplication.h"
 #include <QtQml/QQmlApplicationEngine>
+#include <QtGui/QSurfaceFormat>
+#include <QtQuick/QQuickWindow>
 
 int main(int argc, char *argv[])
 {
     QtQuickControlsApplication app(argc, argv);
+    if (QCoreApplication::arguments().contains(QLatin1String("--coreprofile"))) {
+        QSurfaceFormat fmt = QQuickWindow::defaultFormat();
+        fmt.setVersion(4, 4);
+        fmt.setProfile(QSurfaceFormat::CoreProfile);
+        QQuickWindow::setDefaultFormat(fmt);
+    }
     QQmlApplicationEngine engine(QUrl("qrc:/dialogs/systemdialogs/systemdialogs.qml"));
     return app.exec();
 }
diff --git a/src/controls/Private/FastGlow.qml b/src/controls/Private/FastGlow.qml
index f4bd2c742193985ff87cdb03bb67f67742e144e5..e008dad48d89d72874000f8f4ad8fa787f68bd2c 100644
--- a/src/controls/Private/FastGlow.qml
+++ b/src/controls/Private/FastGlow.qml
@@ -64,7 +64,25 @@ Item {
         hideSource: visible
     }
 
-    property string __internalBlurVertexShader: "
+    property string __internalBlurVertexShader: rootItem.window.glslIsCoreProfile ? "#version 150
+        in vec4 qt_Vertex;
+        in vec2 qt_MultiTexCoord0;
+        uniform mat4 qt_Matrix;
+        uniform float yStep;
+        uniform float xStep;
+        out vec2 qt_TexCoord0;
+        out vec2 qt_TexCoord1;
+        out vec2 qt_TexCoord2;
+        out vec2 qt_TexCoord3;
+
+        void main() {
+            qt_TexCoord0 = vec2(qt_MultiTexCoord0.x + xStep, qt_MultiTexCoord0.y + yStep * 0.36);
+            qt_TexCoord1 = vec2(qt_MultiTexCoord0.x + xStep * 0.36, qt_MultiTexCoord0.y - yStep);
+            qt_TexCoord2 = vec2(qt_MultiTexCoord0.x - xStep * 0.36, qt_MultiTexCoord0.y + yStep);
+            qt_TexCoord3 = vec2(qt_MultiTexCoord0.x - xStep, qt_MultiTexCoord0.y - yStep * 0.36);
+            gl_Position = qt_Matrix * qt_Vertex;
+        }
+    " : "
         attribute highp vec4 qt_Vertex;
         attribute highp vec2 qt_MultiTexCoord0;
         uniform highp mat4 qt_Matrix;
@@ -83,8 +101,23 @@ Item {
             gl_Position = qt_Matrix * qt_Vertex;
         }
     "
+    property string __internalBlurFragmentShader: rootItem.window.glslIsCoreProfile ? "#version 150
+        uniform sampler2D source;
+        uniform float qt_Opacity;
+        in vec2 qt_TexCoord0;
+        in vec2 qt_TexCoord1;
+        in vec2 qt_TexCoord2;
+        in vec2 qt_TexCoord3;
+        out vec4 fragColor;
 
-    property string __internalBlurFragmentShader: "
+        void main() {
+            vec4 sourceColor = (texture(source, qt_TexCoord0) +
+                texture(source, qt_TexCoord1) +
+                texture(source, qt_TexCoord2) +
+                texture(source, qt_TexCoord3)) * 0.25;
+            fragColor = sourceColor * qt_Opacity;
+        }
+    " : "
         uniform lowp sampler2D source;
         uniform lowp float qt_Opacity;
         varying highp vec2 qt_TexCoord0;
@@ -99,7 +132,7 @@ Item {
             texture2D(source, qt_TexCoord3)) * 0.25;
             gl_FragColor = sourceColor * qt_Opacity;
         }
-   "
+    "
 
     ShaderEffect {
         id: level0
@@ -359,7 +392,37 @@ Item {
 
         onLodChanged: calculateWeights()
 
-        fragmentShader: "
+        fragmentShader: rootItem.window.glslIsCoreProfile ? "#version 150
+            uniform sampler2D source1;
+            uniform sampler2D source2;
+            uniform sampler2D source3;
+            uniform sampler2D source4;
+            uniform sampler2D source5;
+            uniform float weight1;
+            uniform float weight2;
+            uniform float weight3;
+            uniform float weight4;
+            uniform float weight5;
+            uniform vec4 color;
+            uniform float spread;
+            uniform float qt_Opacity;
+            in vec2 qt_TexCoord0;
+            out vec4 fragColor;
+
+            float linearstep(float e0, float e1, float x) {
+                return clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+            }
+
+            void main() {
+                vec4 sourceColor = texture(source1, qt_TexCoord0) * weight1;
+                sourceColor += texture(source2, qt_TexCoord0) * weight2;
+                sourceColor += texture(source3, qt_TexCoord0) * weight3;
+                sourceColor += texture(source4, qt_TexCoord0) * weight4;
+                sourceColor += texture(source5, qt_TexCoord0) * weight5;
+                sourceColor = mix(vec4(0), color, linearstep(0.0, spread, sourceColor.a));
+                fragColor = sourceColor * qt_Opacity;
+            }
+        " : "
             uniform lowp sampler2D source1;
             uniform lowp sampler2D source2;
             uniform lowp sampler2D source3;
diff --git a/src/dialogs/DefaultColorDialog.qml b/src/dialogs/DefaultColorDialog.qml
index 1b5f74858a36bcf4b931a5574f22f6c0664f9a32..7880de4983ae969414f0f8d3fb6aa16df1bf2105 100644
--- a/src/dialogs/DefaultColorDialog.qml
+++ b/src/dialogs/DefaultColorDialog.qml
@@ -136,7 +136,54 @@ AbstractColorDialog {
                     anchors.centerIn: parent
                     property real hue: hueSlider.value
 
-                    fragmentShader: "
+                    fragmentShader: root.window.glslIsCoreProfile ? "#version 150
+                    in vec2 qt_TexCoord0;
+                    uniform float qt_Opacity;
+                    uniform float hue;
+                    out vec4 fragColor;
+
+                    float hueToIntensity(float v1, float v2, float h) {
+                        h = fract(h);
+                        if (h < 1.0 / 6.0)
+                            return v1 + (v2 - v1) * 6.0 * h;
+                        else if (h < 1.0 / 2.0)
+                            return v2;
+                        else if (h < 2.0 / 3.0)
+                            return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h);
+
+                        return v1;
+                    }
+
+                    vec3 HSLtoRGB(vec3 color) {
+                        float h = color.x;
+                        float l = color.z;
+                        float s = color.y;
+
+                        if (s < 1.0 / 256.0)
+                            return vec3(l, l, l);
+
+                        float v1;
+                        float v2;
+                        if (l < 0.5)
+                            v2 = l * (1.0 + s);
+                        else
+                            v2 = (l + s) - (s * l);
+
+                        v1 = 2.0 * l - v2;
+
+                        float d = 1.0 / 3.0;
+                        float r = hueToIntensity(v1, v2, h + d);
+                        float g = hueToIntensity(v1, v2, h);
+                        float b = hueToIntensity(v1, v2, h - d);
+                        return vec3(r, g, b);
+                    }
+
+                    void main() {
+                        vec4 c = vec4(1.0);
+                        c.rgb = HSLtoRGB(vec3(hue, 1.0 - qt_TexCoord0.t, qt_TexCoord0.s));
+                        fragColor = c * qt_Opacity;
+                    }
+                    " : "
                     varying mediump vec2 qt_TexCoord0;
                     uniform highp float qt_Opacity;
                     uniform highp float hue;
diff --git a/tests/auto/controls/data/tst_applicationwindow.qml b/tests/auto/controls/data/tst_applicationwindow.qml
index a428fe974ad34bf11d5f8a1cee675fac180988f5..8695d59eabaca66d7079d14170ff006af008dd60 100644
--- a/tests/auto/controls/data/tst_applicationwindow.qml
+++ b/tests/auto/controls/data/tst_applicationwindow.qml
@@ -41,6 +41,7 @@
 import QtQuick 2.1
 import QtTest 1.0
 import QtQuickControlsTests 1.0
+import QtQuick.Window 2.1
 
 Item {
     id: container