diff --git a/experimental/PdfViewer/SkPdfRenderer.cpp b/experimental/PdfViewer/SkPdfRenderer.cpp
index c5fc8f5..8502ac5 100644
--- a/experimental/PdfViewer/SkPdfRenderer.cpp
+++ b/experimental/PdfViewer/SkPdfRenderer.cpp
@@ -1923,7 +1923,7 @@
 
 PdfContext* gPdfContext = NULL;
 
-bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas) const {
+bool SkPdfRenderer::renderPage(int page, SkCanvas* canvas, const SkRect& dst) const {
     if (!fPdfDoc) {
         return false;
     }
@@ -1941,13 +1941,14 @@
     gPdfContext = &pdfContext;
 
     // TODO(edisonn): get matrix stuff right.
-    // TODO(edisonn): add DPI/scale/zoom.
     SkScalar z = SkIntToScalar(0);
-    SkRect rect = fPdfDoc->MediaBox(page);
-    SkScalar w = rect.width();
-    SkScalar h = rect.height();
+    SkScalar w = dst.width();
+    SkScalar h = dst.height();
 
-    SkPoint pdfSpace[4] = {SkPoint::Make(z, z), SkPoint::Make(w, z), SkPoint::Make(w, h), SkPoint::Make(z, h)};
+    SkScalar wp = fPdfDoc->MediaBox(page).width();
+    SkScalar hp = fPdfDoc->MediaBox(page).height();
+
+    SkPoint pdfSpace[4] = {SkPoint::Make(z, z), SkPoint::Make(wp, z), SkPoint::Make(wp, hp), SkPoint::Make(z, hp)};
 //                SkPoint skiaSpace[4] = {SkPoint::Make(z, h), SkPoint::Make(w, h), SkPoint::Make(w, z), SkPoint::Make(z, z)};
 
     // TODO(edisonn): add flag for this app to create sourunding buffer zone
@@ -1977,12 +1978,12 @@
     pdfContext.fGraphicsState.fMatrixTm = pdfContext.fGraphicsState.fMatrix;
     pdfContext.fGraphicsState.fMatrixTlm = pdfContext.fGraphicsState.fMatrix;
 
-    canvas->setMatrix(pdfContext.fOriginalMatrix);
-
 #ifndef PDF_DEBUG_NO_PAGE_CLIPING
-    canvas->clipRect(SkRect::MakeXYWH(z, z, w, h), SkRegion::kIntersect_Op, true);
+    canvas->clipRect(dst, SkRegion::kIntersect_Op, true);
 #endif
 
+    canvas->setMatrix(pdfContext.fOriginalMatrix);
+
 // erase with red before?
 //        SkPaint paint;
 //        paint.setColor(SK_ColorRED);
diff --git a/experimental/PdfViewer/SkPdfRenderer.h b/experimental/PdfViewer/SkPdfRenderer.h
index d0e3384..8bbc4f1 100644
--- a/experimental/PdfViewer/SkPdfRenderer.h
+++ b/experimental/PdfViewer/SkPdfRenderer.h
@@ -11,6 +11,7 @@
 
 class SkCanvas;
 class SkNativeParsedPDF;
+class SkRect;
 
 // TODO(edisonn): move in another file
 class SkPdfRenderer : public SkRefCnt {
@@ -20,7 +21,7 @@
     virtual ~SkPdfRenderer() {unload();}
 
     // TODO(edisonn): add options to render forms, or not
-    bool renderPage(int page, SkCanvas* canvas) const;
+    bool renderPage(int page, SkCanvas* canvas, const SkRect& dst) const;
 
     bool load(const SkString inputFileName);
     bool loaded() const {return fPdfDoc != NULL;}
diff --git a/experimental/PdfViewer/pdf_viewer_main.cpp b/experimental/PdfViewer/pdf_viewer_main.cpp
index a28e561..7bff14a 100644
--- a/experimental/PdfViewer/pdf_viewer_main.cpp
+++ b/experimental/PdfViewer/pdf_viewer_main.cpp
@@ -101,16 +101,21 @@
 extern "C" SkCanvas* gDumpCanvas;
 
 static bool render_page(const SkString& outputDir,
-                         const SkString& inputFilename,
-                         const SkPdfRenderer& renderer,
-                         int page) {
+                        const SkString& inputFilename,
+                        const SkPdfRenderer& renderer,
+                        int page) {
     SkRect rect = renderer.MediaBox(page < 0 ? 0 :page);
 
     SkBitmap bitmap;
+    SkScalar width = SkScalarMul(rect.width(),  SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
+    SkScalar height = SkScalarMul(rect.height(),  SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
+
+    rect = SkRect::MakeWH(width, height);
+
 #ifdef PDF_DEBUG_3X
-    setup_bitmap(&bitmap, 3 * (int)SkScalarToDouble(rect.width()), 3 * (int)SkScalarToDouble(rect.height()));
+    setup_bitmap(&bitmap, 3 * (int)SkScalarToDouble(width), 3 * (int)SkScalarToDouble(height));
 #else
-    setup_bitmap(&bitmap, (int)SkScalarToDouble(rect.width()), (int)SkScalarToDouble(rect.height()));
+    setup_bitmap(&bitmap, (int)SkScalarToDouble(width), (int)SkScalarToDouble(height));
 #endif
     SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (bitmap)));
     SkCanvas canvas(device);
@@ -118,7 +123,7 @@
     gDumpBitmap = &bitmap;
 
     gDumpCanvas = &canvas;
-    renderer.renderPage(page < 0 ? 0 : page, &canvas);
+    renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
 
     SkString outputPath;
     if (!make_output_filepath(&outputPath, outputDir, inputFilename, page)) {
diff --git a/samplecode/SamplePdfFileViewer.cpp b/samplecode/SamplePdfFileViewer.cpp
index fecc153..fc8b0f0 100644
--- a/samplecode/SamplePdfFileViewer.cpp
+++ b/samplecode/SamplePdfFileViewer.cpp
@@ -46,7 +46,7 @@
         if (renderer.loaded()) {
             pic = SkNEW(SkPicture);
             SkCanvas* canvas = pic->beginRecording((int)renderer.MediaBox(0).width(), (int)renderer.MediaBox(0).height());
-            renderer.renderPage(0, canvas);
+            renderer.renderPage(0, canvas, renderer.MediaBox(0));
             pic->endRecording();
         }
         return pic;
