diff --git a/src/controls/ApplicationWindow.qml b/src/controls/ApplicationWindow.qml
index f54fa8f5120cdce6387b9de77bb092ed513bc3f6..bb969946e8c3cf2753a145655cbe752220922b2e 100644
--- a/src/controls/ApplicationWindow.qml
+++ b/src/controls/ApplicationWindow.qml
@@ -149,8 +149,24 @@ Window {
     */
     readonly property real __qwindowsize_max: (1 << 24) - 1
 
-    width: contentArea.__noImplicitWidthGiven ? 0 : Math.min(Math.max(minimumWidth, contentArea.implicitWidth), maximumWidth)
-    height: contentArea.__noImplicitHeightGiven ? 0 : Math.min(Math.max(minimumHeight, contentArea.implicitHeight + __topBottomMargins), maximumHeight)
+    /*! \internal */
+    property real __width: 0
+    Binding {
+        target: root
+        property: "__width"
+        when: root.minimumWidth <= root.maximumWidth
+        value: Math.max(Math.min(root.maximumWidth, contentArea.implicitWidth), root.minimumWidth)
+    }
+    /*! \internal */
+    property real __height: 0
+    Binding {
+        target: root
+        property: "__height"
+        when: root.minimumHeight <= root.maximumHeight
+        value: Math.max(Math.min(root.maximumHeight, contentArea.implicitHeight), root.minimumHeight)
+    }
+    width: contentArea.__noImplicitWidthGiven ? 0 : __width
+    height: contentArea.__noImplicitHeightGiven ? 0 : __height
 
     minimumWidth: contentArea.__noMinimumWidthGiven ? 0 : contentArea.minimumWidth
     minimumHeight: contentArea.__noMinimumHeightGiven ? 0 : (contentArea.minimumHeight + __topBottomMargins)
diff --git a/tests/auto/controls/data/tst_applicationwindow.qml b/tests/auto/controls/data/tst_applicationwindow.qml
index cfe6e0a3389e786ab32fcfd247dced5cfaf477b8..8e35caff19cd1c8e930f70048336b752344786bd 100644
--- a/tests/auto/controls/data/tst_applicationwindow.qml
+++ b/tests/auto/controls/data/tst_applicationwindow.qml
@@ -168,5 +168,43 @@ TestCase {
         }
     }
 
+    function test_minimumSizeLargerThan_MaximumSize() {
+        var test_control = 'import QtQuick 2.1; \
+        import QtQuick.Controls 1.1;            \
+        import QtQuick.Layouts 1.1;             \
+        ApplicationWindow {                     \
+            minimumWidth: 200;                  \
+            maximumWidth: 200;                  \
+            minimumHeight: 200;                 \
+            maximumHeight: 200;                 \
+            Rectangle {                         \
+                implicitWidth: 1;               \
+                implicitHeight: 20;             \
+            }                                   \
+        }                                       '
+
+        var window = Qt.createQmlObject(test_control, container, '')
+        window.visible = true
+        wait(0)
+        // The following two calls will set the min,max range to be invalid
+        // this should *not* produce a warning
+        compare(window.height, 200)
+        window.maximumHeight -= 10
+        window.minimumHeight += 10
+        // Restore min,max range back to sane values
+        window.maximumHeight += 20
+        compare(window.height, 210)
+
+        // Do the same test for width
+        compare(window.width, 200)
+        window.maximumWidth-= 10
+        window.minimumWidth+= 10
+        // Restore back to sane values
+        window.maximumWidth += 20
+        compare(window.width, 210)
+
+        window.destroy()
+    }
+
 }
 }