diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js
index 45b79754f..b7d3a8647 100644
--- a/web/pdf_page_view.js
+++ b/web/pdf_page_view.js
@@ -97,7 +97,7 @@ var PDFPageView = (function PDFPageViewClosure() {
     this.renderer = options.renderer || RendererType.CANVAS;
 
     this.paintTask = null;
-    this.paintedViewport = null;
+    this.paintedViewportMap = new WeakMap();
     this.renderingState = RenderingStates.INITIAL;
     this.resume = null;
     this.error = null;
@@ -170,6 +170,7 @@ var PDFPageView = (function PDFPageViewClosure() {
       }
 
       if (this.canvas && !currentZoomLayerNode) {
+        this.paintedViewportMap.delete(this.canvas);
         // Zeroing the width and height causes Firefox to release graphics
         // resources immediately, which can greatly reduce memory consumption.
         this.canvas.width = 0;
@@ -177,11 +178,9 @@ var PDFPageView = (function PDFPageViewClosure() {
         delete this.canvas;
       }
       if (this.svg) {
+        this.paintedViewportMap.delete(this.svg);
         delete this.svg;
       }
-      if (!currentZoomLayerNode) {
-        this.paintedViewport = null;
-      }
 
       this.loadingIconDiv = document.createElement('div');
       this.loadingIconDiv.className = 'loadingIcon';
@@ -281,7 +280,7 @@ var PDFPageView = (function PDFPageViewClosure() {
         Math.floor(height) + 'px';
       // The canvas may have been originally rotated, rotate relative to that.
       var relativeRotation = this.viewport.rotation -
-                             this.paintedViewport.rotation;
+                             this.paintedViewportMap.get(target).rotation;
       var absRotation = Math.abs(relativeRotation);
       var scaleX = 1, scaleY = 1;
       if (absRotation === 90 || absRotation === 270) {
@@ -434,9 +433,10 @@ var PDFPageView = (function PDFPageViewClosure() {
         }
 
         if (self.zoomLayer) {
+          var zoomLayerCanvas = self.zoomLayer.firstChild;
+          self.paintedViewportMap.delete(zoomLayerCanvas);
           // Zeroing the width and height causes Firefox to release graphics
           // resources immediately, which can greatly reduce memory consumption.
-          var zoomLayerCanvas = self.zoomLayer.firstChild;
           zoomLayerCanvas.width = 0;
           zoomLayerCanvas.height = 0;
 
@@ -578,7 +578,7 @@ var PDFPageView = (function PDFPageViewClosure() {
       canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';
       canvas.style.height = roundToDivide(viewport.height, sfy[1]) + 'px';
       // Add the viewport so it's known what it was originally drawn with.
-      this.paintedViewport = viewport;
+      this.paintedViewportMap.set(canvas, viewport);
 
       // Rendering area
       var transform = !outputScale.scaled ? null :
@@ -643,7 +643,7 @@ var PDFPageView = (function PDFPageViewClosure() {
         return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) {
           ensureNotCancelled();
           self.svg = svg;
-          self.paintedViewport = actualSizeViewport;
+          self.paintedViewportMap.set(svg, actualSizeViewport);
 
           svg.style.width = wrapper.style.width;
           svg.style.height = wrapper.style.height;