diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 0.1.8
+
+* Fix reading images that have more than 8bit per channel:
+  [#85](https://github.com/lehins/massiv/issues/85)
+
 # 0.1.7
 
 * Fix compatibility with `JuicyPixels >= 3.3.0`
diff --git a/massiv-io.cabal b/massiv-io.cabal
--- a/massiv-io.cabal
+++ b/massiv-io.cabal
@@ -1,5 +1,5 @@
 name:                massiv-io
-version:             0.1.7.0
+version:             0.1.8.0
 synopsis:            Import/export of Image files into massiv Arrays
 description:         This package contains functionality for import/export of arrays
                      into the real world. For now it only has the ability to read/write
diff --git a/src/Data/Massiv/Array/IO/Image/JuicyPixels.hs b/src/Data/Massiv/Array/IO/Image/JuicyPixels.hs
--- a/src/Data/Massiv/Array/IO/Image/JuicyPixels.hs
+++ b/src/Data/Massiv/Array/IO/Image/JuicyPixels.hs
@@ -79,7 +79,7 @@
 import qualified Codec.Picture.Jpg as JP
 import qualified Codec.Picture.Types as TypesJP
 import Control.Exception
-import Control.Monad (guard, msum)
+import Control.Monad (guard, msum, unless)
 import Data.Bifunctor
 import qualified Data.ByteString as B
 import qualified Data.ByteString.Lazy as BL (ByteString)
@@ -1004,10 +1004,20 @@
 
 -- General decoding and helper functions
 
-fromJPImageUnsafe :: forall jpx cs e . (Storable (Pixel cs e), JP.Pixel jpx) =>
+fromJPImageUnsafe :: forall jpx cs e . (Storable (Pixel cs e), Storable e, JP.Pixel jpx) =>
                      JP.Image jpx -> Maybe (Image S cs e)
 fromJPImageUnsafe (JP.Image n m !v) = do
-  guard (n * m * sizeOf (undefined :: Pixel cs e) == V.length v)
+  let numberOfComponentsFromSize = sizeOf (undefined :: Pixel cs e) `div` sizeOf (undefined :: e)
+      numComponentsPerPixel = JP.componentCount (undefined :: jpx)
+  unless (numComponentsPerPixel == numberOfComponentsFromSize) $
+    error $
+    concat
+      [ "Mismatched sizes beteen JuicyPixels: "
+      , show numComponentsPerPixel
+      , " and massiv: "
+      , show numberOfComponentsFromSize
+      ]
+  guard (n * m * numComponentsPerPixel == V.length v)
   fromVectorM Par (Sz (m :. n)) $ V.unsafeCast v
 {-# INLINE fromJPImageUnsafe #-}
 
