diff --git a/src/OpenTK/Platform/MacOS/Cocoa/Cocoa.cs b/src/OpenTK/Platform/MacOS/Cocoa/Cocoa.cs
index ac6ae977..0732538a 100644
--- a/src/OpenTK/Platform/MacOS/Cocoa/Cocoa.cs
+++ b/src/OpenTK/Platform/MacOS/Cocoa/Cocoa.cs
@@ -138,13 +138,17 @@ namespace OpenTK.Platform.MacOS
         [DllImport(LibObjC, EntryPoint="objc_msgSend_fpret")]
         extern static float SendFloat_i386(IntPtr receiver, IntPtr selector);
 
+        // On x64 using selector that return CGFloat give you 64 bit == double
         [DllImport(LibObjC, EntryPoint="objc_msgSend")]
-        extern static float SendFloat_normal(IntPtr receiver, IntPtr selector);
+        extern static double SendFloat_x64(IntPtr receiver, IntPtr selector);
+
+        [DllImport(LibObjC, EntryPoint="objc_msgSend")]
+        extern static float SendFloat_ios(IntPtr receiver, IntPtr selector);
 
         public static float SendFloat(IntPtr receiver, IntPtr selector)
         {
             #if IOS
-            return SendFloat_normal(receiver, selector);
+            return SendFloat_ios(receiver, selector);
             #else
             if (IntPtr.Size == 4)
             {
@@ -152,7 +156,7 @@ namespace OpenTK.Platform.MacOS
             }
             else
             {
-                return SendFloat_normal(receiver, selector);
+                return (float)SendFloat_x64(receiver, selector);
             }
             #endif
         }