diff --git a/pdf.js b/pdf.js
index 68a2597d3..d06d07e0e 100644
--- a/pdf.js
+++ b/pdf.js
@@ -3030,10 +3030,14 @@ var CanvasGraphics = (function() {
// we want the canvas to be as large as the step size
var botRight = applyMatrix([x0 + xstep, y0 + ystep], matrix);
- var tmpCanvas = new this.ScratchCanvas(
- Math.ceil(botRight[0] - topLeft[0]), // width
- Math.ceil(botRight[1] - topLeft[1]) // height
- );
+ var width = botRight[0] - topLeft[0];
+ var height = botRight[1] - topLeft[1];
+
+ // TODO: hack to avoid OOM, remove then pattern code is fixed
+ if (Math.abs(width) > 8192 || Math.abs(height) > 8192)
+ return false;
+
+ var tmpCanvas = new this.ScratchCanvas(width, height);
// set the new canvas element context as the graphics context
var tmpCtx = tmpCanvas.getContext("2d");
diff --git a/test/test_slave.html b/test/test_slave.html
index 5652a5860..71ec7cacc 100644
--- a/test/test_slave.html
+++ b/test/test_slave.html
@@ -6,7 +6,7 @@