diff --git a/src/core/image.js b/src/core/image.js
index 5f3aa6c13..2d1f9d6e1 100644
--- a/src/core/image.js
+++ b/src/core/image.js
@@ -140,7 +140,12 @@ var PDFImage = (function PDFImageClosure() {
       this.smask = new PDFImage(xref, res, smask, false);
     } else if (mask) {
       if (isStream(mask)) {
-        this.mask = new PDFImage(xref, res, mask, false, null, null, true);
+        var maskDict = mask.dict, imageMask = maskDict.get('ImageMask', 'IM');
+        if (!imageMask) {
+          warn('Ignoring /Mask in image without /ImageMask.');
+        } else {
+          this.mask = new PDFImage(xref, res, mask, false, null, null, true);
+        }
       } else {
         // Color key mask (just an array).
         this.mask = mask;
diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore
index d47a4652b..05d5598e1 100644
--- a/test/pdfs/.gitignore
+++ b/test/pdfs/.gitignore
@@ -32,6 +32,7 @@
 !issue3879r.pdf
 !close-path-bug.pdf
 !issue6019.pdf
+!issue6621.pdf
 !issue1293r.pdf
 !issue6541.pdf
 !issue2948.pdf
diff --git a/test/pdfs/issue6621.pdf b/test/pdfs/issue6621.pdf
new file mode 100644
index 000000000..ea3cd73a2
Binary files /dev/null and b/test/pdfs/issue6621.pdf differ
diff --git a/test/test_manifest.json b/test/test_manifest.json
index cce065970..15720a018 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -732,6 +732,13 @@
        "rounds": 1,
        "type": "load"
     },
+    {  "id": "issue6621",
+       "file": "pdfs/issue6621.pdf",
+       "md5": "8079ce514fb2cdded4251eade6380ba9",
+       "link": false,
+       "rounds": 1,
+       "type": "eq"
+    },
     {  "id": "scan-bad",
        "file": "pdfs/scan-bad.pdf",
        "md5": "4cf988f01ab83f61aca57f406dfd6584",