diff --git a/bench/DeferredCanvasBench.cpp b/bench/DeferredCanvasBench.cpp
index 6087388..99c07bf 100644
--- a/bench/DeferredCanvasBench.cpp
+++ b/bench/DeferredCanvasBench.cpp
@@ -76,7 +76,7 @@
 protected:
 
     virtual void initDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE {
-        canvas.setNotificationClient(SkNEW(SimpleNotificationClient))->unref();
+        canvas.setNotificationClient(&fNotificationClient);
     }
 
     virtual void drawInDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE {
@@ -93,10 +93,12 @@
 
     virtual void finalizeDeferredCanvas(SkDeferredCanvas& canvas) SK_OVERRIDE {
         canvas.clear(0x0);
+        canvas.setNotificationClient(NULL);
     }
    
 private:
     typedef DeferredCanvasBench INHERITED;
+    SimpleNotificationClient fNotificationClient;
 };
 
 
diff --git a/include/utils/SkDeferredCanvas.h b/include/utils/SkDeferredCanvas.h
index f531371..ff32351 100644
--- a/include/utils/SkDeferredCanvas.h
+++ b/include/utils/SkDeferredCanvas.h
@@ -48,8 +48,11 @@
     /**
      *  Specify a NotificationClient to be used by this canvas. Calling
      *  setNotificationClient will release the previously set 
-     *  NotificationClient, if any. Takes a reference on the notification
-     *  client.
+     *  NotificationClient, if any. SkDeferredCanvas does not take ownership
+     *  of the notification client.  Therefore user code is resposible
+     *  for its destruction.  The notification client must be unregistered
+     *  by calling setNotificationClient(NULL) if it is destroyed before
+     *  this canvas.
      *  Note: Must be called after the device is set with setDevice.
      *
      *  @param notificationClient interface for dispatching notifications
@@ -167,10 +170,8 @@
     virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter) SK_OVERRIDE;
 
 public:
-    class NotificationClient : public SkRefCnt {
+    class NotificationClient {
     public:
-        SK_DECLARE_INST_COUNT(NotificationClient)
-
         /**
          *  Called before executing one or several draw commands, which means
          *  once per flush when deferred rendering is enabled.
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index bb33e22..661e017 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -16,8 +16,6 @@
 #include "SkPaint.h"
 #include "SkShader.h"
 
-SK_DEFINE_INST_COUNT(SkDeferredCanvas::NotificationClient)
-
 enum {
     // Deferred canvas will auto-flush when recording reaches this limit
     kDefaultMaxRecordingStorageBytes = 64*1024*1024,
@@ -354,7 +352,6 @@
 
     fMaxRecordingStorageBytes = kDefaultMaxRecordingStorageBytes;
     fNotificationClient = notificationClient;
-    SkSafeRef(fNotificationClient);
     fImmediateDevice = immediateDevice; // ref counted via fImmediateCanvas
     fImmediateCanvas = SkNEW_ARGS(SkCanvas, (fImmediateDevice));
     fPipeController.setPlaybackCanvas(fImmediateCanvas);
@@ -364,7 +361,6 @@
 DeferredDevice::~DeferredDevice() {
     this->flushPending();
     SkSafeUnref(fImmediateCanvas);
-    SkSafeUnref(fNotificationClient);
 }
 
 void DeferredDevice::setMaxRecordingStorage(size_t maxStorage) {
@@ -386,7 +382,7 @@
     
 void DeferredDevice::setNotificationClient(
     SkDeferredCanvas::NotificationClient* notificationClient) {
-    SkRefCnt_SafeAssign(fNotificationClient, notificationClient);
+    fNotificationClient = notificationClient;
 }
 
 void DeferredDevice::contentsCleared() {
