--- a/src/gui/styles/qplastiquestyle.cpp
+++ b/src/gui/styles/qplastiquestyle.cpp
@@ -4345,7 +4345,8 @@
         if (const QStyleOptionComboBox *comboBox = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
             bool sunken = comboBox->state & State_On; // play dead if combobox has no items
             bool reverse = comboBox->direction == Qt::RightToLeft;
-            int menuButtonWidth = 16;
+            QRect arrowRect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxArrow, widget);
+            int menuButtonWidth = arrowRect.width() - 3;
             int xoffset = sunken ? (reverse ? -1 : 1) : 0;
             int yoffset = sunken ? 1 : 0;
             QRect rect = comboBox->rect;
@@ -5035,7 +5036,7 @@
 #ifndef QT_NO_COMBOBOX
     case CT_ComboBox:
         newSize = sizeFromContents(CT_PushButton, option, size, widget);
-        newSize.rwidth() += 30; // Make room for drop-down indicator
+        newSize.rwidth() += 2 * proxy()->pixelMetric(PM_SmallIconSize, option, widget); // Make room for drop-down indicator
         newSize.rheight() += 4;
         break;
 #endif
@@ -5259,12 +5260,14 @@
         break;
 #endif // QT_NO_SPINBOX
 #ifndef QT_NO_COMBOBOX
-    case CC_ComboBox:
+    case CC_ComboBox: {
+        int smallIconSize = proxy()->pixelMetric(PM_SmallIconSize, option, widget);
+
         switch (subControl) {
         case SC_ComboBoxArrow:
             rect = visualRect(option->direction, option->rect, rect);
-            rect.setRect(rect.right() - 17, rect.top() - 2,
-                         19, rect.height() + 4);
+            rect.setRect(rect.right() - smallIconSize - 1, rect.top() - 2,
+                         smallIconSize + 3, rect.height() + 4);
             rect = visualRect(option->direction, option->rect, rect);
             break;
         case SC_ComboBoxEditField: {
@@ -5274,10 +5277,10 @@
 
                 if (box->editable) {
                     rect = box->rect.adjusted(blueFrameWidth, blueFrameWidth, -blueFrameWidth, -blueFrameWidth);
-                    rect.setRight(rect.right() - 16); // Overlaps the combobox button by 2 pixels
+                    rect.setRight(rect.right() - smallIconSize); // Overlaps the combobox button by 2 pixels
                 } else {
                     rect.setRect(option->rect.left() + frameWidth, option->rect.top() + frameWidth,
-                                 option->rect.width() - 16 - 2 * frameWidth,
+                                 option->rect.width() - smallIconSize - 2 * frameWidth,
                                  option->rect.height() - 2 * frameWidth);
                     rect.setLeft(rect.left() + 2);
                     rect.setRight(rect.right() - 2);
@@ -5292,6 +5295,7 @@
             break;
         }
         break;
+    }
 #endif // QT_NO_COMBOBOX
     case CC_TitleBar:
         if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(option)) {
