diff --git a/Cargo.toml b/Cargo.toml
index 4c9a07936ec603776779d580667fa62745c52584..109d3b9a004171ac9dda1e93ed4fe2e23f48e0f1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,12 +10,12 @@ homepage = "https://crates.rs/crates/lcms2"
 documentation = "https://kornelski.github.io/rust-lcms2/lcms2/"
 repository = "https://github.com/kornelski/rust-lcms2.git"
 categories = ["multimedia::images", "api-bindings"]
-version = "5.1.1"
+version = "5.1.2"
 edition = "2018"
 
 [dependencies]
 foreign-types = "0.4.0"
-lcms2-sys = "2.4.7"
+lcms2-sys = "3.1.0"
 
 [features]
 static = ["lcms2-sys/static"]
diff --git a/src/profile.rs b/src/profile.rs
index cbfb7a73834fda9dfc4f0757fbf22d929ab16ca1..ac14c4f54829725d6c19448a79987a7dec09f2f2 100644
--- a/src/profile.rs
+++ b/src/profile.rs
@@ -424,7 +424,7 @@ impl<Ctx: Context> Profile<Ctx> {
                                       temp_src_dst: Option<(u32, u32)>) -> LCMSResult<Self> {
         let (temp_src, temp_dest) = temp_src_dst.unwrap_or((0,0));
         Self::new_handle(unsafe {
-            ffi::cmsCreateBCHSWabstractProfileTHR(context.as_ptr(), lut_points as i32, bright, contrast, hue, saturation, temp_src as i32, temp_dest as i32)
+            ffi::cmsCreateBCHSWabstractProfileTHR(context.as_ptr(), lut_points as _, bright, contrast, hue, saturation, temp_src as _, temp_dest as _)
         })
     }
 
diff --git a/src/tonecurve.rs b/src/tonecurve.rs
index eba5cf1d57d7244f238aa4bdcb910d30a9ae1cdb..b8ee265d05e796b9fb94ed2f234e585963647911 100644
--- a/src/tonecurve.rs
+++ b/src/tonecurve.rs
@@ -26,7 +26,7 @@ impl ToneCurve {
     /// Builds a tone curve based on a table of 16-bit values. Tone curves built with this function are restricted to 0…1.0 domain.
     pub fn new_tabulated(values: &[u16]) -> Self {
         assert!(values.len() < std::i32::MAX as usize);
-        unsafe { Self::new_handle(ffi::cmsBuildTabulatedToneCurve16(ptr::null_mut(), values.len() as i32, values.as_ptr())) }
+        unsafe { Self::new_handle(ffi::cmsBuildTabulatedToneCurve16(ptr::null_mut(), values.len() as _, values.as_ptr())) }
     }
 
     /// Builds a tone curve based on a table of floating point  values. Tone curves built with this function are **not** restricted to 0…1.0 domain.
@@ -86,7 +86,7 @@ impl ToneCurveRef {
 
     /// Creates a tone curve that is the inverse  of given tone curve. In the case it couldn’t be analytically reversed, a tablulated curve of nResultSamples is created.
     pub fn reversed_samples(&self, samples: usize) -> ToneCurve {
-        unsafe { ToneCurve::from_ptr(ffi::cmsReverseToneCurveEx(samples as i32, self.as_ptr())) }
+        unsafe { ToneCurve::from_ptr(ffi::cmsReverseToneCurveEx(samples as _, self.as_ptr())) }
         }
 
     /// Composites two tone curves in the form Y^-1(X(t))