Merge branch 'master' of https://github.com/rive-app/rive-cpp into low_level_rendering
diff --git a/src/constraints/ik_constraint.cpp b/src/constraints/ik_constraint.cpp
index 66e3a2d..fd64aad 100644
--- a/src/constraints/ik_constraint.cpp
+++ b/src/constraints/ik_constraint.cpp
@@ -280,23 +280,22 @@
 			break;
 		}
 	}
-
 	// 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);
+			    std::fmod(fk.transformComponents.rotation(), (float)M_PI * 2);
+			float toAngle = std::fmod(fk.angle, (float)M_PI * 2);
 			float diff = toAngle - fromAngle;
 			if (diff > M_PI)
 			{
-				diff -= M_PI_2;
+				diff -= M_PI * 2;
 			}
 			else if (diff < -M_PI)
 			{
-				diff += M_PI_2;
+				diff += M_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 30b80e4..b84c943 100644
--- a/src/constraints/rotation_constraint.cpp
+++ b/src/constraints/rotation_constraint.cpp
@@ -88,17 +88,17 @@
 		Mat2D::decompose(m_ComponentsB, transformB);
 	}
 
-	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(), (float)M_PI * 2);
+	float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
 	float diff = angleB - angleA;
 
 	if (diff > M_PI)
 	{
-		diff -= M_PI_2;
+		diff -= M_PI * 2;
 	}
 	else if (diff < -M_PI)
 	{
-		diff += M_PI_2;
+		diff += M_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 c29dacd..bdc43f7 100644
--- a/src/constraints/transform_constraint.cpp
+++ b/src/constraints/transform_constraint.cpp
@@ -34,16 +34,16 @@
 	Mat2D::decompose(m_ComponentsA, transformA);
 	Mat2D::decompose(m_ComponentsB, transformB);
 
-	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(), (float)M_PI * 2);
+	float angleB = std::fmod(m_ComponentsB.rotation(), (float)M_PI * 2);
 	float diff = angleB - angleA;
 	if (diff > M_PI)
 	{
-		diff -= M_PI_2;
+		diff -= M_PI * 2;
 	}
 	else if (diff < -M_PI)
 	{
-		diff += M_PI_2;
+		diff += M_PI * 2;
 	}
 
 	float t = strength();