diff --git a/src/OpenTK/Math/MathHelper.cs b/src/OpenTK/Math/MathHelper.cs
index a5ecc61c..f1effe6e 100644
--- a/src/OpenTK/Math/MathHelper.cs
+++ b/src/OpenTK/Math/MathHelper.cs
@@ -341,15 +341,16 @@ namespace OpenTK
/// the number of floating point bits to check
///
public static bool ApproximatelyEqual(float a, float b, int maxDeltaBits) {
- int aInt = FloatToInt32Bits(a);
+ // we use longs here, otherwise we run into a two's complement problem, causing this to fail with -2 and 2.0
+ long aInt = FloatToInt32Bits(a);
if (aInt < 0)
aInt = Int32.MinValue - aInt;
- int bInt = FloatToInt32Bits(b);
+ long bInt = FloatToInt32Bits(b);
if (bInt < 0)
bInt = Int32.MinValue - bInt;
- int intDiff = Math.Abs(aInt - bInt);
+ long intDiff = Math.Abs(aInt - bInt);
return intDiff <= (1 << maxDeltaBits);
}