--- src/cairo-arc.c	2022-02-23 11:49:59.000000000 +0100
+++ src/cairo-arc.c.new	2022-12-08 15:18:00.944036607 +0100
@@ -120,7 +120,7 @@
     major_axis = _cairo_matrix_transformed_circle_major_axis (ctm, radius);
     max_angle = _arc_max_angle_for_tolerance_normalized (tolerance / major_axis);
 
-    return ceil (fabs (angle) / max_angle);
+    return (int)ceil (fabs (angle) / max_angle);
 }
 
 /* We want to draw a single spline approximating a circular arc radius
--- src/cairo-compiler-private.h	2022-02-23 11:49:59.000000000 +0100
+++ src/cairo-compiler-private.h.new	2022-12-08 15:18:07.341184763 +0100
@@ -225,7 +225,7 @@
 #endif
 #endif
 
-#if defined(_MSC_VER) && defined(_M_IX86)
+#if defined(_MSC_VER) && defined(_M_IX86) && defined(ML_REALLY) // ml: disabling this useless macro.
 /* When compiling with /Gy and /OPT:ICF identical functions will be folded in together.
    The CAIRO_ENSURE_UNIQUE macro ensures that a function is always unique and
    will never be folded into another one. Something like this might eventually
--- src/cairo-wideint-private.h	2022-02-23 11:49:59.000000000 +0100
+++ src/cairo-wideint-private.h.new	2022-12-08 15:18:23.068676927 +0100
@@ -209,7 +209,7 @@
     return _cairo_int64_to_int32
 	(_cairo_int64_divrem (num, _cairo_int32_to_int64 (den)).quo);
 #else
-    return num / den;
+    return (int32_t)(num / den);
 #endif
 }
 
