diff --git a/src/components/Canvas/Ruler.tsx b/src/components/Canvas/Ruler.tsx
index 3f968231..bf496cca 100644
--- a/src/components/Canvas/Ruler.tsx
+++ b/src/components/Canvas/Ruler.tsx
@@ -64,7 +64,12 @@ export function Ruler({
strokeWidth={isMajor ? 1 : 0.5}
listening={false} />,
);
- const displayMm = horizontalReversed ? labelWidthMm - mm : mm;
+ // `mm` was rounded above; subtraction reintroduces IEEE-754 artefacts
+ // (e.g. 100 - 30 = 70.00000000000001), so re-round to keep tick labels
+ // free of trailing-decimal noise on rotated labels.
+ const displayMm = horizontalReversed
+ ? Math.round((labelWidthMm - mm) * 1000) / 1000
+ : mm;
if (isMajor && displayMm > 0 && displayMm <= labelWidthMm) {
els.push(
,
);
- const displayMm = verticalReversed ? labelHeightMm - mm : mm;
+ const displayMm = verticalReversed
+ ? Math.round((labelHeightMm - mm) * 1000) / 1000
+ : mm;
if (isMajor && displayMm > 0 && displayMm <= labelHeightMm) {
els.push(