diff -Nurpd a/scribus/ui/marginwidget.cpp b/scribus/ui/marginwidget.cpp
--- a/scribus/ui/marginwidget.cpp	2024-01-07 18:06:55.000000000 +0100
+++ b/scribus/ui/marginwidget.cpp	2024-01-09 18:34:00.141637796 +0100
@@ -143,6 +143,16 @@ MarginWidget::MarginWidget( QWidget* par
 		addTab(bleedPage, tr("Bleeds"));
 	}
 
+	topR->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	bottomR->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	leftR->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	rightR->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+
+	BleedLeft->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	BleedRight->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	BleedTop->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+	BleedBottom->setSingleStep(unitGetSingleStepFromIndex(unitIndex));
+
 	// hints
 	topR->setToolTip( "<qt>" + tr( "Distance between the top margin guide and the edge of the page" ) + "</qt>");
 	bottomR->setToolTip( "<qt>" + tr( "Distance between the bottom margin guide and the edge of the page" ) + "</qt>");
@@ -354,6 +364,17 @@ void MarginWidget::setNewUnit(int newUni
 		connect(BleedTop, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds()));
 		connect(BleedBottom, SIGNAL(valueChanged(double)), this, SLOT(changeBleeds()));
 	}
+
+	topR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	bottomR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	leftR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	rightR->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+
+	BleedLeft->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	BleedRight->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	BleedTop->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+	BleedBottom->setSingleStep(unitGetSingleStepFromIndex(newUnitIndex));
+
 	connect(topR, SIGNAL(valueChanged(double)), this, SLOT(setTop()));
 	connect(bottomR, SIGNAL(valueChanged(double)), this, SLOT(setBottom()));
 	connect(leftR, SIGNAL(valueChanged(double)), this, SLOT(setLeft()));
diff -Nurpd a/scribus/units.cpp b/scribus/units.cpp
--- a/scribus/units.cpp	2024-01-07 18:07:07.000000000 +0100
+++ b/scribus/units.cpp	2024-01-09 18:30:58.088950628 +0100
@@ -28,6 +28,20 @@ for which a new license (GPL+exception)
 #include "units.h"
 
 /*!
+ * @brief Returns the SingleStep for the selected unit of measure.
+ */
+double SCRIBUS_API unitGetSingleStepFromIndex(const int index)
+{
+        switch (index)
+        {
+                case SC_IN:
+			return 0.125;
+                default:
+			return 1;
+        }
+}
+
+/*!
  * @brief Returns the ratio to points for the selected unit of measure. Ratios are for: PT, MM, IN, P, CM, C. DEG and PCT return 1.0 as they will never convert
  */
 double unitGetRatioFromIndex(const int index)
diff -Nurpd a/scribus/units.h b/scribus/units.h
--- a/scribus/units.h	2024-01-07 18:07:14.000000000 +0100
+++ b/scribus/units.h	2024-01-09 18:27:09.311993576 +0100
@@ -48,6 +48,7 @@ enum scUnit {
 	SC_PCT         = 7
 };
 
+double SCRIBUS_API unitGetSingleStepFromIndex(const int index);
 double SCRIBUS_API unitGetRatioFromIndex(const int index);
 int SCRIBUS_API unitGetBaseFromIndex(const int index);
 QString SCRIBUS_API unitGetStrFromIndex(const int index);
