diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index bc1b929..fd19e89 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1051,7 +1051,9 @@
     int count = canvas->save();
     
     SkMatrix m = canvas->getTotalMatrix();
-    m.invert(&m);
+    if (!m.invert(&m)) {
+        return;
+    }
     SkPoint offset, center;
     SkScalar mouseX = fMouseX * SK_Scalar1;
     SkScalar mouseY = fMouseY * SK_Scalar1;
diff --git a/samplecode/SampleUnitMapper.cpp b/samplecode/SampleUnitMapper.cpp
index d323ecb..09d0f14 100644
--- a/samplecode/SampleUnitMapper.cpp
+++ b/samplecode/SampleUnitMapper.cpp
@@ -116,12 +116,17 @@
         canvas->drawPoints(SkCanvas::kPoints_PointMode, 2, &fPts[1], paint);
     }
 
-    SkPoint invertPt(SkScalar x, SkScalar y) {
-        SkPoint pt;
+    bool invertPt(SkScalar x, SkScalar y, SkPoint* result) {
+        if (NULL == result)
+            return true;
+
         SkMatrix m;
-        fMatrix.invert(&m);
-        m.mapXY(x, y, &pt);
-        return pt;
+        if (!fMatrix.invert(&m)) {
+            return false;
+        }
+
+        m.mapXY(x, y, result);
+        return true;
     }
 
     int hittest(SkScalar x, SkScalar y) {
@@ -143,7 +148,11 @@
     
     virtual bool onClick(Click* click) {
         if (fDragIndex >= 0) {
-            fPts[fDragIndex] = invertPt(click->fCurr.fX, click->fCurr.fY);
+            if (!invertPt(click->fCurr.fX, click->fCurr.fY, 
+                          &fPts[fDragIndex])) {
+                return false;
+            }
+
             this->setViews();
             this->inval(NULL);
             return true;
