--- a/src/plugins/styles/plastique/qplastiquestyle.cpp
+++ b/src/plugins/styles/plastique/qplastiquestyle.cpp
@@ -3918,6 +3918,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);
@@ -3953,39 +3954,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()));
+                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();
