diff --git a/dm/DMCpuGMTask.cpp b/dm/DMCpuGMTask.cpp
index 63a3c42..c3c4ae1 100644
--- a/dm/DMCpuGMTask.cpp
+++ b/dm/DMCpuGMTask.cpp
@@ -24,6 +24,7 @@
     AllocatePixels(fColorType, fGM->getISize().width(), fGM->getISize().height(), &bm);
 
     SkCanvas canvas(bm);
+    CanvasPreflight(&canvas);
     canvas.concat(fGM->getInitialTransform());
     fGM->draw(&canvas);
     canvas.flush();
diff --git a/dm/DMGpuGMTask.cpp b/dm/DMGpuGMTask.cpp
index 3178fd6..65d65d9 100644
--- a/dm/DMGpuGMTask.cpp
+++ b/dm/DMGpuGMTask.cpp
@@ -1,5 +1,4 @@
 #include "DMGpuGMTask.h"
-
 #include "DMUtil.h"
 #include "DMWriteTask.h"
 #include "SkCommandLineFlags.h"
@@ -35,6 +34,7 @@
         return;
     }
     SkCanvas* canvas = surface->getCanvas();
+    CanvasPreflight(canvas);
 
     canvas->concat(fGM->getInitialTransform());
     fGM->draw(canvas);
diff --git a/dm/DMPDFTask.cpp b/dm/DMPDFTask.cpp
index c996aae..3102478 100644
--- a/dm/DMPDFTask.cpp
+++ b/dm/DMPDFTask.cpp
@@ -71,12 +71,14 @@
     if (fGM.get()) {
         rasterize = 0 == (fGM->getFlags() & skiagm::GM::kSkipPDFRasterization_Flag);
         SinglePagePDF pdf(fGM->width(), fGM->height());
+        CanvasPreflight(pdf.canvas());
         //TODO(mtklein): GM doesn't do this.  Why not?
         //pdf.canvas()->concat(fGM->getInitialTransform());
         fGM->draw(pdf.canvas());
         pdfData.reset(pdf.end());
     } else {
         SinglePagePDF pdf(fPicture->cullRect().width(), fPicture->cullRect().height());
+        CanvasPreflight(pdf.canvas());
         fPicture->playback(pdf.canvas());
         pdfData.reset(pdf.end());
     }
diff --git a/dm/DMPipeTask.cpp b/dm/DMPipeTask.cpp
index c7c64bd..9f54560 100644
--- a/dm/DMPipeTask.cpp
+++ b/dm/DMPipeTask.cpp
@@ -55,6 +55,7 @@
                                                  fFlags,
                                                  bitmap.width(),
                                                  bitmap.height());
+    CanvasPreflight(pipeCanvas);
     pipeCanvas->concat(fGM->getInitialTransform());
     fGM->draw(pipeCanvas);
     writer.endRecording();
diff --git a/dm/DMUtil.cpp b/dm/DMUtil.cpp
index 19b1c0f..a702bbe 100644
--- a/dm/DMUtil.cpp
+++ b/dm/DMUtil.cpp
@@ -1,11 +1,25 @@
 #include "DMUtil.h"
 
 #include "SkColorPriv.h"
+#include "SkCommandLineFlags.h"
 #include "SkPicture.h"
 #include "SkPictureRecorder.h"
 
+DEFINE_string(matrix, "1 0 0 0 1 0 0 0 1",
+              "Matrix to apply to the canvas before drawing.");
+
 namespace DM {
 
+void CanvasPreflight(SkCanvas* canvas) {
+    if (FLAGS_matrix.count() == 9) {
+        SkMatrix m;
+        for (int i = 0; i < 9; i++) {
+            m[i] = (SkScalar)atof(FLAGS_matrix[i]);
+        }
+        canvas->concat(m);
+    }
+}
+
 SkString UnderJoin(const char* a, const char* b) {
     SkString s;
     s.appendf("%s_%s", a, b);
@@ -27,6 +41,7 @@
 
     SkCanvas* canvas = skr ? recorder.EXPERIMENTAL_beginRecording(w, h, factory)
                            : recorder.  DEPRECATED_beginRecording(w, h, factory);
+    CanvasPreflight(canvas);
     canvas->concat(gm->getInitialTransform());
     gm->draw(canvas);
     canvas->flush();
diff --git a/dm/DMUtil.h b/dm/DMUtil.h
index fa29c76..49da857 100644
--- a/dm/DMUtil.h
+++ b/dm/DMUtil.h
@@ -2,6 +2,7 @@
 #define DMUtil_DEFINED
 
 #include "SkBitmap.h"
+#include "SkCanvas.h"
 #include "SkString.h"
 #include "gm.h"
 
@@ -36,6 +37,9 @@
 // Are these identical bitmaps?
 bool BitmapsEqual(const SkBitmap& a, const SkBitmap& b);
 
+// Hook to modify canvas using global flag values (e.g. --matrix).
+void CanvasPreflight(SkCanvas*);
+
 }  // namespace DM
 
 #endif  // DMUtil_DEFINED
