diff --git a/src/canvas.js b/src/canvas.js
index 00858c937..7221b72cb 100644
--- a/src/canvas.js
+++ b/src/canvas.js
@@ -255,6 +255,8 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
       }
       // Scale so that canvas units are the same as PDF user space units
       this.ctx.scale(cw / mediaBox.width, ch / mediaBox.height);
+      // Move the media left-top corner to the (0,0) canvas position
+      this.ctx.translate(-mediaBox.x, -mediaBox.y);
       this.textDivs = [];
       this.textLayerQueue = [];
     },
diff --git a/src/core.js b/src/core.js
index e13059773..dc46ec717 100644
--- a/src/core.js
+++ b/src/core.js
@@ -110,9 +110,11 @@ var Page = (function PageClosure() {
         width: this.width,
         height: this.height
       };
+      var mediaBox = this.mediaBox;
+      var offsetX = mediaBox[0], offsetY = mediaBox[1];
       if (isArray(obj) && obj.length == 4) {
-        var tl = this.rotatePoint(obj[0], obj[1]);
-        var br = this.rotatePoint(obj[2], obj[3]);
+        var tl = this.rotatePoint(obj[0] - offsetX, obj[1] - offsetY);
+        var br = this.rotatePoint(obj[2] - offsetX, obj[3] - offsetY);
         view.x = Math.min(tl.x, br.x);
         view.y = Math.min(tl.y, br.y);
         view.width = Math.abs(tl.x - br.x);
diff --git a/src/function.js b/src/function.js
index 83db53ba1..26b8fe679 100644
--- a/src/function.js
+++ b/src/function.js
@@ -270,7 +270,6 @@ var PDFFunction = (function PDFFunctionClosure() {
 
     constructStiched: function pdfFunctionConstructStiched(fn, dict, xref) {
       var domain = dict.get('Domain');
-      var range = dict.get('Range');
 
       if (!domain)
         error('No domain');
@@ -279,13 +278,13 @@ var PDFFunction = (function PDFFunctionClosure() {
       if (inputSize != 1)
         error('Bad domain for stiched function');
 
-      var fnRefs = dict.get('Functions');
+      var fnRefs = xref.fetchIfRef(dict.get('Functions'));
       var fns = [];
       for (var i = 0, ii = fnRefs.length; i < ii; ++i)
         fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
 
-      var bounds = dict.get('Bounds');
-      var encode = dict.get('Encode');
+      var bounds = xref.fetchIfRef(dict.get('Bounds'));
+      var encode = xref.fetchIfRef(dict.get('Encode'));
 
       return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
     },
diff --git a/test/pdfs/issue1001.pdf.link b/test/pdfs/issue1001.pdf.link
new file mode 100644
index 000000000..24e1bebc2
--- /dev/null
+++ b/test/pdfs/issue1001.pdf.link
@@ -0,0 +1 @@
+http://www.myhillsapartment.com/island_club/floorplans/images/links/Island_IC_brochure.pdf
diff --git a/test/test_manifest.json b/test/test_manifest.json
index 9c722f98f..dbb83604b 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -356,6 +356,13 @@
        "rounds": 1,
        "type": "eq"
     },
+    {  "id": "issue1001",
+      "file": "pdfs/issue1001.pdf",
+      "md5": "0f1496e80a82a923e91d9e74c55ad94e",
+      "rounds": 1,
+      "link": true,
+      "type": "eq"
+    },
     {  "id": "aboutstacks",
       "file": "pdfs/aboutstacks.pdf",
       "md5": "6e7c8416a293ba2d83bc8dd20c6ccf51",