diff --git a/src/image.js b/src/image.js
index 3495483e7..59f70f99a 100644
--- a/src/image.js
+++ b/src/image.js
@@ -347,6 +347,10 @@ var PDFImage = (function PDFImageClosure() {
       var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;
       var imgArray = this.getImageBytes(originalHeight * rowBytes);
 
+      // imgArray can be incomplete (e.g. after CCITT fax encoding)
+      var actualHeight = 0 | (imgArray.length / rowBytes *
+                         height / originalHeight);
+
       var comps = this.colorSpace.getRgbBuffer(
         this.getComponents(imgArray), bpc);
       if (originalWidth != width || originalHeight != height)
@@ -355,7 +359,7 @@ var PDFImage = (function PDFImageClosure() {
       var compsPos = 0;
       var opacity = this.getOpacity(width, height);
       var opacityPos = 0;
-      var length = width * height * 4;
+      var length = width * actualHeight * 4;
 
       for (var i = 0; i < length; i += 4) {
         buffer[i] = comps[compsPos++];
diff --git a/test/pdfs/issue1658.pdf.link b/test/pdfs/issue1658.pdf.link
new file mode 100644
index 000000000..f77372073
--- /dev/null
+++ b/test/pdfs/issue1658.pdf.link
@@ -0,0 +1 @@
+https://www.ads.tuwien.ac.at/teaching/archiv/praktika/CherkasskyGoldberg-1995-MaxFlow.pdf
\ No newline at end of file
diff --git a/test/test_manifest.json b/test/test_manifest.json
index 12761bd33..a80c7bb4f 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -539,6 +539,15 @@
       "link": true,
       "type": "eq"
     },
+    {  "id": "issue1658",
+      "file": "pdfs/issue1658.pdf",
+      "md5": "b71a0f641e83ad427b8bcfc180899a05",
+      "rounds": 1,
+      "skipPages": [1, 2, 3, 4, 5, 6, 7, 8, 9],
+      "pageLimit": 10,
+      "link": true,
+      "type": "eq"
+    },
     {  "id": "issue1049",
       "file": "pdfs/issue1049.pdf",
       "md5": "15473fffcdde9fb8f3756a4cf1aab347",