diff --git a/include/rive/math/math_types.hpp b/include/rive/math/math_types.hpp
new file mode 100644
index 0000000..ec5545d
--- /dev/null
+++ b/include/rive/math/math_types.hpp
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2022 Rive
+ */
+
+#ifndef _RIVE_MATH_TYPES_DEFINED_
+#define _RIVE_MATH_TYPES_DEFINED_
+
+#include "rive/rive_types.hpp"
+#include <cmath>
+
+namespace rive {
+
+namespace math {
+    constexpr float PI = 3.14159265f;
+}
+
+}
+
+#endif
diff --git a/src/constraints/ik_constraint.cpp b/src/constraints/ik_constraint.cpp
index fc75ff0..ed049ec 100644
--- a/src/constraints/ik_constraint.cpp
+++ b/src/constraints/ik_constraint.cpp
@@ -1,8 +1,8 @@
 #include "rive/constraints/ik_constraint.hpp"
 #include "rive/bones/bone.hpp"
 #include "rive/artboard.hpp"
+#include "rive/math/math_types.hpp"
 #include <algorithm>
-#include <math.h> // M_PI
 
 using namespace rive;
 
@@ -139,17 +139,17 @@
 
         if (invertDirection()) {
             r1 = std::atan2(cv[1], cv[0]) - A;
-            r2 = -C + M_PI + angleCorrection;
+            r2 = -C + math::PI + angleCorrection;
         } else {
             r1 = A + std::atan2(cv[1], cv[0]);
-            r2 = C - M_PI + angleCorrection;
+            r2 = C - math::PI + angleCorrection;
         }
     } else if (invertDirection()) {
         r1 = std::atan2(cv[1], cv[0]) - A;
-        r2 = -C + M_PI;
+        r2 = -C + math::PI;
     } else {
         r1 = A + std::atan2(cv[1], cv[0]);
-        r2 = C - M_PI;
+        r2 = C - math::PI;
     }
 
     constrainRotation(*fk1, r1);
@@ -237,13 +237,13 @@
     // At the end, mix the FK angle with the IK angle by strength
     if (strength() != 1.0f) {
         for (BoneChainLink& fk : m_FkChain) {
-            float fromAngle = std::fmod(fk.transformComponents.rotation(), (float)M_PI * 2);
-            float toAngle = std::fmod(fk.angle, (float)M_PI * 2);
+            float fromAngle = std::fmod(fk.transformComponents.rotation(), math::PI * 2);
+            float toAngle = std::fmod(fk.angle, math::PI * 2);
             float diff = toAngle - fromAngle;
-            if (diff > M_PI) {
-                diff -= M_PI * 2;
-            } else if (diff < -M_PI) {
-                diff += M_PI * 2;
+            if (diff > math::PI) {
+                diff -= math::PI * 2;
+            } else if (diff < -math::PI) {
+                diff += math::PI * 2;
             }
             float angle = fromAngle + diff * strength();
             constrainRotation(fk, angle);
diff --git a/src/constraints/rotation_constraint.cpp b/src/constraints/rotation_constraint.cpp
index 7122ac7..85b376e 100644
--- a/src/constraints/rotation_constraint.cpp
+++ b/src/constraints/rotation_constraint.cpp
@@ -1,7 +1,7 @@
 #include "rive/constraints/rotation_constraint.hpp"
 #include "rive/transform_component.hpp"
 #include "rive/math/mat2d.hpp"
-#include <cmath>
+#include "rive/math_types.hpp"
 
 using namespace rive;
 
@@ -69,14 +69,14 @@
         m_ComponentsB = transformB.decompose();
     }
 
-    float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI * 2);
-    float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
+    float angleA = std::fmod(m_ComponentsA.rotation(), math::PI * 2);
+    float angleB = std::fmod(m_ComponentsB.rotation(), math::PI * 2);
     float diff = angleB - angleA;
 
-    if (diff > M_PI) {
-        diff -= M_PI * 2;
-    } else if (diff < -M_PI) {
-        diff += M_PI * 2;
+    if (diff > math::PI) {
+        diff -= math::PI * 2;
+    } else if (diff < -math::PI) {
+        diff += math::PI * 2;
     }
 
     m_ComponentsB.rotation(m_ComponentsA.rotation() + diff * strength());
diff --git a/src/constraints/transform_constraint.cpp b/src/constraints/transform_constraint.cpp
index 988c34a..ffa1035 100644
--- a/src/constraints/transform_constraint.cpp
+++ b/src/constraints/transform_constraint.cpp
@@ -1,7 +1,7 @@
 #include "rive/constraints/transform_constraint.hpp"
 #include "rive/transform_component.hpp"
 #include "rive/math/mat2d.hpp"
-#include <cmath>
+#include "rive/math/math_types.hpp"
 
 using namespace rive;
 
@@ -29,13 +29,13 @@
     m_ComponentsA = transformA.decompose();
     m_ComponentsB = transformB.decompose();
 
-    float angleA = std::fmod(m_ComponentsA.rotation(), (float)M_PI * 2);
-    float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
+    float angleA = std::fmod(m_ComponentsA.rotation(), math::PI * 2);
+    float angleB = std::fmod(m_ComponentsB.rotation(), math::PI * 2);
     float diff = angleB - angleA;
-    if (diff > M_PI) {
-        diff -= M_PI * 2;
-    } else if (diff < -M_PI) {
-        diff += M_PI * 2;
+    if (diff > math::PI) {
+        diff -= math::PI * 2;
+    } else if (diff < -math::PI) {
+        diff += math::PI * 2;
     }
 
     float t = strength();
diff --git a/src/shapes/polygon.cpp b/src/shapes/polygon.cpp
index f5704e6..aabfef4 100644
--- a/src/shapes/polygon.cpp
+++ b/src/shapes/polygon.cpp
@@ -1,6 +1,7 @@
 #include "rive/shapes/polygon.hpp"
 #include "rive/shapes/star.hpp"
 #include "rive/shapes/straight_vertex.hpp"
+#include "rive/math/math_types.hpp"
 #include <cmath>
 
 using namespace rive;
@@ -22,8 +23,8 @@
     auto ox = -originX() * width() + halfWidth;
     auto oy = -originY() * height() + halfHeight;
 
-    auto angle = -M_PI / 2;
-    auto inc = 2 * M_PI / points();
+    auto angle = -math::PI / 2;
+    auto inc = 2 * -math::PI / points();
 
     for (StraightVertex& vertex : m_PolygonVertices) {
         vertex.x(ox + cos(angle) * halfWidth);
diff --git a/src/shapes/star.cpp b/src/shapes/star.cpp
index 18d4910..2705eb1 100644
--- a/src/shapes/star.cpp
+++ b/src/shapes/star.cpp
@@ -1,5 +1,6 @@
 #include "rive/shapes/star.hpp"
 #include "rive/shapes/straight_vertex.hpp"
+#include "rive/math/math_types.hpp"
 #include <cmath>
 #include <cstdio>
 
@@ -20,8 +21,8 @@
     auto oy = -originY() * height() + halfHeight;
 
     std::size_t length = vertexCount();
-    auto angle = -M_PI / 2;
-    auto inc = 2 * M_PI / length;
+    auto angle = -math::PI / 2;
+    auto inc = 2 * math::PI / length;
 
     for (std::size_t i = 0; i < length; i += 2) {
         {
