diff --git a/include/core/SkRefCnt.h b/include/core/SkRefCnt.h
index 2024e08..b9b2c98 100644
--- a/include/core/SkRefCnt.h
+++ b/include/core/SkRefCnt.h
@@ -147,32 +147,18 @@
         return *this;
     }
 
-    bool operator==(const SkRefPtr& rp) const { return fObj == rp.fObj; }
-    bool operator==(const T* obj) const { return fObj == obj; }
-    bool operator!=(const SkRefPtr& rp) const { return fObj != rp.fObj; }
-    bool operator!=(const T* obj) const { return fObj != obj; }
-
     T* get() const { return fObj; }
     T& operator*() const { return *fObj; }
     T* operator->() const { return fObj; }
-    bool operator!() const { return !fObj; }
 
     typedef T* SkRefPtr::*unspecified_bool_type;
-    operator unspecified_bool_type() const { return fObj ? &SkRefPtr::fObj : NULL; }
+    operator unspecified_bool_type() const {
+        return fObj ? &SkRefPtr::fObj : NULL;
+    }
 
 private:
     T* fObj;
 };
 
-template <typename T>
-inline bool operator==(T* obj, const SkRefPtr<T>& rp) {
-    return obj == rp.get();
-}
-
-template <typename T>
-inline bool operator!=(T* obj, const SkRefPtr<T>& rp) {
-    return obj != rp.get();
-}
-
 #endif
 
diff --git a/tests/UtilsTest.cpp b/tests/UtilsTest.cpp
index 1e11bdc..2019a77 100644
--- a/tests/UtilsTest.cpp
+++ b/tests/UtilsTest.cpp
@@ -23,17 +23,17 @@
 
     SkRefPtr<RefClass> rc1;
     REPORTER_ASSERT(reporter, rc0 == rc1);
-    REPORTER_ASSERT(reporter, rc0 != r0);
+    REPORTER_ASSERT(reporter, rc0.get() != r0);
 
     rc0 = r0;
     REPORTER_ASSERT(reporter, rc0);
     REPORTER_ASSERT(reporter, rc0 != rc1);
-    REPORTER_ASSERT(reporter, rc0 == r0);
+    REPORTER_ASSERT(reporter, rc0.get() == r0);
 
     rc1 = rc0;
     REPORTER_ASSERT(reporter, rc1);
     REPORTER_ASSERT(reporter, rc0 == rc1);
-    REPORTER_ASSERT(reporter, rc0 == r0);
+    REPORTER_ASSERT(reporter, rc0.get() == r0);
 
     rc0 = NULL;
     REPORTER_ASSERT(reporter, rc0.get() == NULL);
