diff --git a/src/display/canvas.js b/src/display/canvas.js index d5c4b9edc..ba52eaf9f 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -1506,6 +1506,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { var bounds = Util.getAxialAlignedBoundingBox( group.bbox, currentCtx.mozCurrentTransform); + // Clip the bounding box to the current canvas. + bounds = Util.intersect(bounds, [0, + 0, + currentCtx.canvas.width, + currentCtx.canvas.height]); // Use ceil in case we're between sizes so we don't create canvas that is // too small and make the canvas at least 1x1 pixels. var drawnWidth = Math.max(Math.ceil(bounds[2] - bounds[0]), 1); diff --git a/test/pdfs/bigboundingbox.pdf b/test/pdfs/bigboundingbox.pdf new file mode 100644 index 000000000..b2e1c14dd Binary files /dev/null and b/test/pdfs/bigboundingbox.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 15602609e..5eb0bccc8 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1018,6 +1018,13 @@ "link": true, "type": "load" }, + { "id": "bigboundingbox", + "file": "pdfs/bigboundingbox.pdf", + "md5": "e5c5e2cb80826d6ebf535413865270cd", + "rounds": 1, + "type": "eq", + "about": "When the bounding box for the xobject is transformed it creates a huge bounding box." + }, { "id": "issue2386", "file": "pdfs/issue2386.pdf", "md5": "7dc787639aa6765214e9ff5494d231ed",