--- a/src/gui/styles/qplastiquestyle.cpp
+++ b/src/gui/styles/qplastiquestyle.cpp
@@ -4028,6 +4028,7 @@
             QRect upRect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxUp, widget);
             QRect downRect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxDown, widget);
             QRect buttonRect = upRect | downRect;
+            bool isVerticalButtonsLayout = upRect.center().y() < downRect.top();
 
             // Brushes
             QBrush corner = qMapBrushToRect(option->palette.shadow(), buttonRect);
@@ -4063,39 +4064,47 @@
                 painter->drawLine(buttonRect.topRight() + QPoint(0, -1), buttonRect.bottomRight() + QPoint(0, 1));
 
             if (!reverse) {
+                const QLine separatorLine = isVerticalButtonsLayout
+                        ? QLine(upRect.left() + 1, upRect.bottom(), upRect.right() - 1, upRect.bottom())
+                        : QLine(downRect.right(), downRect.top() + 1, downRect.right(), downRect.bottom() - 1);
+
                 const QLine lines[4] = {
-                    QLine(upRect.left(), upRect.top(), upRect.right() - 2, upRect.top()),
-                    QLine(upRect.left() + 1, upRect.bottom(), upRect.right() - 1, upRect.bottom()),
-                    QLine(downRect.left(), downRect.bottom(), downRect.right() - 2, downRect.bottom()),
-                    QLine(buttonRect.right(), buttonRect.top() + 2, buttonRect.right(), buttonRect.bottom() - 2) };
+                    QLine(buttonRect.left(), buttonRect.top(), buttonRect.right() - 2, buttonRect.top()),
+                    QLine(buttonRect.left(), buttonRect.bottom(), buttonRect.right() - 2, buttonRect.bottom()),
+                    QLine(buttonRect.right(), buttonRect.top() + 2, buttonRect.right(), buttonRect.bottom() - 2),
+                    separatorLine };
                 painter->drawLines(lines, 4);
 
-                points.append(QPoint(upRect.right() - 1, upRect.top() + 1));
-                points.append(QPoint(downRect.right() - 1, downRect.bottom() - 1));
+                points.append(QPoint(buttonRect.right() - 1, buttonRect.top() + 1));
+                points.append(QPoint(buttonRect.right() - 1, buttonRect.bottom() - 1));
                 painter->drawPoints(points.constData(), points.size());
                 points.clear();
                 painter->setPen(QPen(corner, 0));
-                points.append(QPoint(upRect.right() - 1, upRect.top()));
-                points.append(QPoint(upRect.right(), upRect.top() + 1));
-                points.append(QPoint(upRect.right(), downRect.bottom() - 1));
-                points.append(QPoint(upRect.right() - 1, downRect.bottom()));
-            } else {
+                points.append(QPoint(buttonRect.right() - 1, buttonRect.top()));
+                points.append(QPoint(buttonRect.right(), buttonRect.top() + 1));
+                points.append(QPoint(buttonRect.right(), buttonRect.bottom() - 1));
+                points.append(QPoint(buttonRect.right() - 1, buttonRect.bottom()));
+            } else {
+                const QLine separatorLine = isVerticalButtonsLayout
+                        ? QLine(upRect.right() - 1, upRect.bottom(), upRect.left() + 1, upRect.bottom())
+                        : QLine(downRect.right(), downRect.top() + 1, downRect.right(), downRect.bottom() - 1);
+
                 const QLine lines[4] = {
-                    QLine(upRect.right(), upRect.top(), upRect.left() + 2, upRect.top()),
-                    QLine(upRect.right() - 1, upRect.bottom(), upRect.left() + 1, upRect.bottom()),
-                    QLine(downRect.right(), downRect.bottom(), downRect.left() + 2, downRect.bottom()),
-                    QLine(buttonRect.left(), buttonRect.top() + 2, buttonRect.left(), buttonRect.bottom() - 2) };
+                    QLine(buttonRect.right(), buttonRect.top(), buttonRect.left() + 2, buttonRect.top()),
+                    QLine(buttonRect.right(), buttonRect.bottom(), buttonRect.left() + 2, buttonRect.bottom()),
+                    QLine(buttonRect.left(), buttonRect.top() + 2, buttonRect.left(), buttonRect.bottom() - 2),
+                    separatorLine };
                 painter->drawLines(lines, 4);
 
-                points.append(QPoint(upRect.left() + 1, upRect.top() + 1));
-                points.append(QPoint(downRect.left() + 1, downRect.bottom() - 1));
+                points.append(QPoint(buttonRect.left() + 1, buttonRect.top() + 1));
+                points.append(QPoint(buttonRect.left() + 1, buttonRect.bottom() - 1));
                 painter->drawPoints(points.constData(), points.size());
                 points.clear();
                 painter->setPen(QPen(corner, 0));
-                points.append(QPoint(upRect.left() + 1, upRect.top()));
-                points.append(QPoint(upRect.left(), upRect.top() + 1));
-                points.append(QPoint(upRect.left(), downRect.bottom() - 1));
-                points.append(QPoint(upRect.left() + 1, downRect.bottom()));
+                points.append(QPoint(buttonRect.left() + 1, buttonRect.top()));
+                points.append(QPoint(buttonRect.left(), buttonRect.top() + 1));
+                points.append(QPoint(buttonRect.left(), buttonRect.bottom() - 1));
+                points.append(QPoint(buttonRect.left() + 1, buttonRect.bottom()));
             }
             painter->drawPoints(points.constData(), points.size());
             points.clear();
@@ -4236,8 +4245,6 @@
                                   downRect.right() - 1, downRect.bottom() - 1);
             }
 
-            QBrush indicatorBrush = qMapBrushToRect(option->palette.buttonText(), buttonRect);
-            painter->setPen(QPen(indicatorBrush, 0));
             if (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus) {
                 QPoint center;
                 if (spinBox->subControls & SC_SpinBoxUp) {
@@ -4253,6 +4260,11 @@
                         ++center.rx();
                         ++center.ry();
                     }
+
+                    QPalette::ColorGroup cg = (spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled) ? QPalette::Active : QPalette::Disabled;
+                    QBrush indicatorBrush = qMapBrushToRect(option->palette.brush(cg, QPalette::ButtonText), upRect);
+                    painter->setPen(QPen(indicatorBrush, 0));
+
                     painter->drawLine(center.x(), center.y() - 2, center.x(), center.y() + 2);
                     painter->drawLine(center.x() - 2, center.y(), center.x() + 2, center.y());
                 }
@@ -4269,6 +4281,11 @@
                         ++center.rx();
                         ++center.ry();
                     }
+
+                    QPalette::ColorGroup cg = (spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled) ? QPalette::Active : QPalette::Disabled;
+                    QBrush indicatorBrush = qMapBrushToRect(option->palette.brush(cg, QPalette::ButtonText), downRect);
+                    painter->setPen(QPen(indicatorBrush, 0));
+
                     painter->drawLine(center.x() - 2, center.y(), center.x() + 2, center.y());
                 }
             } else {
@@ -4284,6 +4301,11 @@
                     offset = upSunken ? 1 : 0;
                     QRect upArrowRect(upRect.center().x() - 3 + offset, upRect.center().y() - 2 + offset, 7, 4);
                     centerX = upArrowRect.center().x();
+
+                    QPalette::ColorGroup cg = (spinBox->stepEnabled & QAbstractSpinBox::StepUpEnabled) ? QPalette::Active : QPalette::Disabled;
+                    QBrush indicatorBrush = qMapBrushToRect(option->palette.brush(cg, QPalette::ButtonText), upRect);
+                    painter->setPen(QPen(indicatorBrush, 0));
+
                     painter->drawPoint(centerX, upArrowRect.top());
                     const QLine lines[3] = {
                         QLine(centerX - 1, upArrowRect.top() + 1, centerX + 1, upArrowRect.top() + 1),
@@ -4305,6 +4327,11 @@
                         QLine(centerX - 3, downArrowRect.top(), centerX + 3, downArrowRect.top()),
                         QLine(centerX - 2, downArrowRect.top() + 1, centerX + 2, downArrowRect.top() + 1),
                         QLine(centerX - 1, downArrowRect.top() + 2, centerX + 1, downArrowRect.top() + 2) };
+
+                    QPalette::ColorGroup cg = (spinBox->stepEnabled & QAbstractSpinBox::StepDownEnabled) ? QPalette::Active : QPalette::Disabled;
+                    QBrush indicatorBrush = qMapBrushToRect(option->palette.brush(cg, QPalette::ButtonText), downRect);
+                    painter->setPen(QPen(indicatorBrush, 0));
+
                     painter->drawLines(lines, 3);
                     painter->drawPoint(centerX, downArrowRect.top() + 3);
                 }
