diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 80a702b..e6c5108 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -122,8 +122,9 @@
 
 class FlagsDrawFilter : public SkDrawFilter {
 public:
-    FlagsDrawFilter(SkTriState lcd, SkTriState aa, SkTriState filter) :
-        fLCDState(lcd), fAAState(aa), fFilterState(filter) {}
+    FlagsDrawFilter(SkTriState lcd, SkTriState aa, SkTriState filter,
+                    SkTriState hinting) :
+        fLCDState(lcd), fAAState(aa), fFilterState(filter), fHintingState(hinting) {}
 
     virtual void filter(SkPaint* paint, Type t) {
         if (kText_Type == t && kUnknown_SkTriState != fLCDState) {
@@ -135,12 +136,18 @@
         if (kUnknown_SkTriState != fFilterState) {
             paint->setFilterBitmap(kTrue_SkTriState == fFilterState);
         }
+        if (kUnknown_SkTriState != fHintingState) {
+            paint->setHinting(kTrue_SkTriState == fHintingState ?
+                              SkPaint::kNormal_Hinting :
+                              SkPaint::kSlight_Hinting);
+        }
     }
 
 private:
     SkTriState  fLCDState;
     SkTriState  fAAState;
     SkTriState  fFilterState;
+    SkTriState  fHintingState;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -304,6 +311,7 @@
     SkTriState fLCDState;
     SkTriState fAAState;
     SkTriState fFilterState;
+    SkTriState fHintingState;
     unsigned   fFlipAxis;
 
     int fScrollTestX, fScrollTestY;
@@ -435,6 +443,7 @@
     fLCDState = kUnknown_SkTriState;
     fAAState = kUnknown_SkTriState;
     fFilterState = kUnknown_SkTriState;
+    fHintingState = kUnknown_SkTriState;
     fFlipAxis = 0;
     fScrollTestX = fScrollTestY = 0;
 
@@ -857,7 +866,8 @@
         canvas->translate(-cx, -cy);
     }
 
-    canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState, fFilterState))->unref();
+    canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState,
+                                       fFilterState, fHintingState))->unref();
 
     if (fMeasureFPS) {
         fMeasureFPS_Time = 0;   // 0 means the child is not aware of repeat-draw
@@ -1030,6 +1040,11 @@
             fRequestGrabImage = true;
             this->inval(NULL);
             break;
+        case 'h':
+            fHintingState = cycle_tristate(fHintingState);
+            this->updateTitle();
+            this->inval(NULL);
+            break;
         case 'i':
             this->zoomIn();
             break;
@@ -1283,7 +1298,7 @@
 
     title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
     title.prepend(trystate_str(fAAState, "AA ", "aa "));
-    title.prepend(trystate_str(fFilterState, "LERP ", "lerp "));
+    title.prepend(trystate_str(fFilterState, "H ", "h "));
     title.prepend(fFlipAxis & kFlipAxis_X ? "X " : NULL);
     title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL);
 
