diff --git a/src/mask.js b/src/mask.js
index <HASH>..<HASH> 100644
--- a/src/mask.js
+++ b/src/mask.js
@@ -331,7 +331,8 @@ angular.module('ui.mask', [])
                                         valueMasked = '';
                                         iElement.val('');
                                         scope.$apply(function() {
-                                            controller.$setViewValue('');
+                                            //don't call $setViewValue to avoid changing $pristine state.
+                                            controller.$viewValue = '';
                                         });
                                     }
                                 }
diff --git a/test/maskSpec.js b/test/maskSpec.js
index <HASH>..<HASH> 100644
--- a/test/maskSpec.js
+++ b/test/maskSpec.js
@@ -69,6 +69,16 @@ describe("uiMask", function () {
       expect(scope.x).toBe("abc123");
     });
 
+	it("should not dirty or invalidate the input", function() {
+      var input = compileElement(inputHtml);
+      scope.$apply("x = 'abc123'");
+      scope.$apply("mask = '(9) * A'");
+      
+      //Test blur
+      input.triggerHandler("blur");
+      expect(input.hasClass("ng-pristine")).toBeTruthy();
+    });
+
     it("should set ngModelController.$viewValue to match input value", function() {
       compileElement(formHtml);
       scope.$apply("x = 'abc123'");
Added fix for on blur w/ tests.