diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp
index 0adcc65a2cee6613bafb84dc6ff855e28de5542b..be127a54f3f8b477cf43d0510a3f265e7826891d 100644
--- a/src/gui/kernel/qhighdpiscaling.cpp
+++ b/src/gui/kernel/qhighdpiscaling.cpp
@@ -40,7 +40,6 @@
 ****************************************************************************/
 
 #include "qhighdpiscaling_p.h"
-#include "qwindow_p.h" // for QWINDOWSIZE_MAX
 #include "qguiapplication.h"
 #include "qscreen.h"
 #include "qplatformintegration.h"
@@ -228,15 +227,4 @@ QPoint QHighDpiScaling::origin(const QPlatformScreen *platformScreen)
     return platformScreen->geometry().topLeft();
 }
 
-
-Q_GUI_EXPORT QSize QHighDpi::toNativePixelsConstrained(const QSize &size, const QWindow *window)
-{
-    const int width = size.width();
-    const int height = size.height();
-    return QSize(width > 0 && width < QWINDOWSIZE_MAX ?
-                 QHighDpi::toNativePixels(width, window) : width,
-                 height > 0 && height < QWINDOWSIZE_MAX ?
-                 QHighDpi::toNativePixels(height, window) : height);
-}
-
 QT_END_NAMESPACE
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
index 6c96fa2e07fb17eda74584cfcd6f70b10162da7c..8347214823a4932f50fd990fc5a759cbad86e6b0 100644
--- a/src/gui/kernel/qhighdpiscaling_p.h
+++ b/src/gui/kernel/qhighdpiscaling_p.h
@@ -284,9 +284,6 @@ inline QSize fromNativePixels(const QSize &pixelSize, const QWindow *window)
     return pixelSize / QHighDpiScaling::factor(window);
 }
 
-// For converting minimum/maximum sizes of QWindow, limits to 0..QWINDOWSIZE_MAX
-Q_GUI_EXPORT QSize toNativePixelsConstrained(const QSize &size, const QWindow *window);
-
 inline QSize toNativePixels(const QSize &pointSize, const QWindow *window)
 {
     return pointSize * QHighDpiScaling::factor(window);
diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp
index 94e2f18959ae25b3f76ba01b50e98480405dcf63..78b8001a98d7c580482e0a8f5c466146b5328eb6 100644
--- a/src/gui/kernel/qplatformwindow.cpp
+++ b/src/gui/kernel/qplatformwindow.cpp
@@ -496,6 +496,14 @@ QPlatformScreen *QPlatformWindow::screenForGeometry(const QRect &newGeometry) co
     return fallback;
 }
 
+/*!
+    Returns a size with both dimentions bounded to [0, QWINDOWSIZE_MAX]
+*/
+QSize QPlatformWindow::constrainWindowSize(const QSize &size)
+{
+    return size.boundedTo(QSize(0, 0)).boundedTo(QSize(QWINDOWSIZE_MAX, QWINDOWSIZE_MAX));
+}
+
 /*!
     Reimplement this method to set whether the window demands attention
     (for example, by flashing the taskbar icon) depending on \a enabled.
@@ -637,7 +645,7 @@ void QPlatformWindow::requestUpdate()
 */
 QSize QPlatformWindow::windowMinimumSize() const
 {
-    return QHighDpi::toNativePixelsConstrained(window()->minimumSize(), window());
+    return QHighDpi::toNativePixels(constrainWindowSize(window()->minimumSize()), window());
 }
 
 /*!
@@ -645,7 +653,7 @@ QSize QPlatformWindow::windowMinimumSize() const
 */
 QSize QPlatformWindow::windowMaximumSize() const
 {
-    return QHighDpi::toNativePixelsConstrained(window()->maximumSize(), window());
+    return QHighDpi::toNativePixels(constrainWindowSize(window()->maximumSize()), window());
 }
 
 /*!
diff --git a/src/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h
index 0690ce12e152ebfae32a2e4bb9533f68f3a4ee57..c1f2a4bdf15a6d3489d400bcfdcd25da748bba90 100644
--- a/src/gui/kernel/qplatformwindow.h
+++ b/src/gui/kernel/qplatformwindow.h
@@ -141,6 +141,7 @@ public:
 protected:
     static QString formatWindowTitle(const QString &title, const QString &separator);
     QPlatformScreen *screenForGeometry(const QRect &newGeometry) const;
+    static QSize constrainWindowSize(const QSize &size);
 
     QScopedPointer<QPlatformWindowPrivate> d_ptr;
 private: