diff --git a/include/eigenpy/numpy.hpp b/include/eigenpy/numpy.hpp
index 84c7575d7db74559b0807246e47279d1cf01b20e..8269136fccdc952696dc3139a772d05418ac1ff7 100644
--- a/include/eigenpy/numpy.hpp
+++ b/include/eigenpy/numpy.hpp
@@ -44,12 +44,13 @@ namespace eigenpy
   template <> struct NumpyEquivalentType<bool>    { enum { type_code = NPY_BOOL  };};
   template <> struct NumpyEquivalentType<int>     { enum { type_code = NPY_INT    };};
   template <> struct NumpyEquivalentType<unsigned int>     { enum { type_code = NPY_UINT    };};
-#if __APPLE__
-  template <> struct NumpyEquivalentType<long>    { enum { type_code = NPY_INT64    };};
-#endif
+  template <> struct NumpyEquivalentType<long>    { enum { type_code = NPY_LONG    };};
+//#if defined _WIN32 || defined __CYGWIN__
+  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG    };};
+//#else
+//  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG    };};
+//#endif
   template <> struct NumpyEquivalentType<unsigned long>    { enum { type_code = NPY_ULONG    };};
-  template <> struct NumpyEquivalentType<int64_t>    { enum { type_code = NPY_INT64 };};
-//  template <> struct NumpyEquivalentType<long long>    { enum { type_code = NPY_LONGLONG };};
 
   template<typename Scalar>
   bool isNumpyNativeType()
diff --git a/unittest/user_type.cpp b/unittest/user_type.cpp
index 46a34480dadf37e88d7ce2e7bacd95af68992de0..bad7bc042ae879d10c461a0906d6a8ff3b0f55da 100644
--- a/unittest/user_type.cpp
+++ b/unittest/user_type.cpp
@@ -196,16 +196,20 @@ BOOST_PYTHON_MODULE(user_type)
   
   eigenpy::registerCast<DoubleType,double>(true);
   eigenpy::registerCast<double,DoubleType>(true);
-  eigenpy::registerCast<DoubleType,int32_t>(false);
-  eigenpy::registerCast<int32_t,DoubleType>(true);
+  eigenpy::registerCast<DoubleType,int>(false);
+  eigenpy::registerCast<int,DoubleType>(true);
   eigenpy::registerCast<DoubleType,long long>(false);
   eigenpy::registerCast<long long,DoubleType>(true);
+  eigenpy::registerCast<DoubleType,long>(false);
+  eigenpy::registerCast<long,DoubleType>(true);
   eigenpy::registerCast<FloatType,double>(true);
   eigenpy::registerCast<double,FloatType>(false);
   eigenpy::registerCast<FloatType,long long>(false);
   eigenpy::registerCast<long long,FloatType>(true);
-  eigenpy::registerCast<FloatType,int32_t>(false);
-  eigenpy::registerCast<int32_t,FloatType>(true);
+  eigenpy::registerCast<FloatType,int>(false);
+  eigenpy::registerCast<int,FloatType>(true);
+  eigenpy::registerCast<FloatType,long>(false);
+  eigenpy::registerCast<long,FloatType>(true);
 
   bp::implicitly_convertible<double,DoubleType>();
   bp::implicitly_convertible<DoubleType,double>();