--- a/src/widgets/util/qsystemtrayicon.cpp
+++ b/src/widgets/util/qsystemtrayicon.cpp
@@ -50,6 +50,7 @@
 #include "qdesktopwidget.h"
 #include "qbitmap.h"
 #include "private/qlabel_p.h"
+#include "private/qstylehelper_p.h"
 
 QT_BEGIN_NAMESPACE
 
@@ -456,8 +457,9 @@
     const int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize);
     const int closeButtonSize = style()->pixelMetric(QStyle::PM_SmallIconSize) - 2;
 #else
-    const int iconSize = 18;
-    const int closeButtonSize = 15;
+    const int smallIconSize = style()->pixelMetric(QStyle::PM_SmallIconSize);
+    const int iconSize = qMin(int(QStyleHelper::dpiScaled(22)), smallIconSize + 2);
+    const int closeButtonSize = qMin(int(QStyleHelper::dpiScaled(24)), smallIconSize - 1);
 #endif
 
     QPushButton *closeButton = new QPushButton;
