Index: scribus/ui/scrspinbox.cpp
===================================================================
--- scribus/ui/scrspinbox.cpp	(Revision 26266)
+++ scribus/ui/scrspinbox.cpp	(Arbeitskopie)
@@ -227,6 +227,7 @@
 	ts.replace("%", "");
 	ts.replace("°", "");
 	ts.replace(FinishTag, "");
+	ts.replace(suffix(), ""); // We have to remove custom suffix to get a valid input
 	ts = ts.trimmed();
 
 	if (ts.endsWith(su))
@@ -330,8 +331,7 @@
 
 bool ScrSpinBox::eventFilter(QObject* watched, QEvent* event)
 {
-	bool retval = false;
-/* Adding this to be sure that the IM* events are processed correctly i.e not intercepted by our KeyPress/Release handlers */
+	/* Adding this to be sure that the IM* events are processed correctly i.e not intercepted by our KeyPress/Release handlers */
  	if (event->type() == QEvent::InputMethod)
  		return QDoubleSpinBox::eventFilter(watched, event);
 
@@ -341,29 +341,36 @@
 		if (isReadOnly() || !hasFocus())
 			return true;
 		auto* wheelEvent = dynamic_cast<QWheelEvent*>(event);
+		int oldStep = singleStep(); // remember old single steps
 		bool shiftB = wheelEvent->modifiers() & Qt::ShiftModifier;
-		bool altB = wheelEvent->modifiers() & Qt::AltModifier;
-		if (shiftB && !altB)
-		{
+		bool ctrlB = wheelEvent->modifiers() & Qt::ControlModifier; // for macOS it is CMD button
+
+		if (shiftB && !ctrlB)
 			setSingleStep((m_unitIndex == SC_INCHES) ? 0.0625 : 0.1);
-			retval = QAbstractSpinBox::event(event);
-		}
-		else if (!shiftB && altB)
-		{
+		else if (!shiftB && ctrlB)
 			setSingleStep((m_unitIndex == SC_INCHES) ? 1.0 : 10.0);
-			retval = QAbstractSpinBox::event(event);
-		}
-		else if (shiftB && altB)
-		{
+		else if (shiftB && ctrlB)
 			setSingleStep((m_unitIndex == SC_INCHES) ? 0.03125 : 0.01);
-			retval = QAbstractSpinBox::event(event);
-		}
 		else
-		{
 			setSingleStep((m_unitIndex == SC_INCHES) ? 0.125 : 1.0);
-			retval = QAbstractSpinBox::event(event);
-		}
-		return retval;
+
+		// Reimplement MouseWheel behavior without CTRL modifier behavior of QAbstractSpinBox
+#ifdef Q_OS_MACOS
+		if ((wheelEvent->modifiers() & Qt::ShiftModifier) && wheelEvent->source() == Qt::MouseEventNotSynthesized)
+			wheelDeltaRemainder += wheelEvent->angleDelta().x();
+		else
+			wheelDeltaRemainder += wheelEvent->angleDelta().y();
+#else
+		wheelDeltaRemainder += wheelEvent->angleDelta().y();
+#endif
+		const int steps = wheelDeltaRemainder / 120;
+		wheelDeltaRemainder -= steps * 120;
+		if (stepEnabled() & (steps > 0 ? StepUpEnabled : StepDownEnabled))
+			stepBy(steps);
+
+		setSingleStep(oldStep);
+
+		return true;
 	}
 
 	if (event->type() == QEvent::LocaleChange)
Index: scribus/ui/scrspinbox.h
===================================================================
--- scribus/ui/scrspinbox.h	(Revision 26266)
+++ scribus/ui/scrspinbox.h	(Arbeitskopie)
@@ -54,6 +54,7 @@
 	
 	protected:
 		uint m_unitIndex { 0 };
+		int wheelDeltaRemainder;
 		const QMap<QString, double>* m_constants { nullptr };
 
 		void setParameters(int s);

