diff --git a/Numeric/LinearAlgebra/SVD/SVDLIBC.hs b/Numeric/LinearAlgebra/SVD/SVDLIBC.hs
--- a/Numeric/LinearAlgebra/SVD/SVDLIBC.hs
+++ b/Numeric/LinearAlgebra/SVD/SVDLIBC.hs
@@ -69,7 +69,7 @@
     rows <- fromIntegral <$> getRows ptr
     cols <- fromIntegral <$> getCols ptr
     value <- getBuffer ptr >>= newForeignPtr_
-    return $ I.matrixFromVector I.RowMajor rows
+    return $ I.matrixFromVector I.RowMajor rows cols
            $ I.unsafeFromForeignPtr value 0 (rows*cols)
 
 dMatrixToSMatrix :: DenseMatrix -> IO SparseMatrix
diff --git a/hmatrix-svdlibc.cabal b/hmatrix-svdlibc.cabal
--- a/hmatrix-svdlibc.cabal
+++ b/hmatrix-svdlibc.cabal
@@ -1,5 +1,5 @@
 name:                hmatrix-svdlibc
-version:             0.2.1
+version:             0.3.0
 synopsis:            SVDLIBC bindings for HMatrix
 description:
   Bindings for the sparse singular value decomposition
@@ -25,7 +25,7 @@
   Include-dirs:        include, svdlibc
   Includes:            glue.h, svdlib.h
   build-depends:       base >=4.6 && <5.0,
-                       hmatrix >=0.15.0.1 && <0.16
+                       hmatrix >=0.16 && <0.17
 
 executable svdlibc-test
   main-is:             Test.hs
@@ -33,4 +33,4 @@
   include-dirs:        include, svdlibc
   includes:            glue.h, svdlib.h
   build-depends:       base >=4.6 && <5.0,
-                       hmatrix >=0.15.0.1 && <0.16
+                       hmatrix >=0.16 && <0.17
