diff --git a/libhwcomposer/hwc_copybit.cpp b/libhwcomposer/hwc_copybit.cpp
index 744195f..1cfcd6a 100644
--- a/libhwcomposer/hwc_copybit.cpp
+++ b/libhwcomposer/hwc_copybit.cpp
@@ -189,9 +189,10 @@
                return -1;
            }
        }
-       if(mFbCache.getUnchangedFbDRCount(dirtyRect) <
+       hwc_rect_t displayRect = list->hwLayers[changingLayerIndex].displayFrame;
+       if(mFbCache.getUnchangedFbDRCount(dirtyRect, displayRect) <
                                              NUM_RENDER_BUFFERS) {
-               mFbCache.insertAndUpdateFbCache(dirtyRect);
+              mFbCache.insertAndUpdateFbCache(dirtyRect, displayRect);
               changingLayerIndex =  -1;
        }
     } else {
@@ -1260,19 +1261,24 @@
 }
 void CopyBit::FbCache::reset() {
      memset(&FbdirtyRect, 0, sizeof(FbdirtyRect));
+     memset(&FbdisplayRect, 0, sizeof(FbdisplayRect));
      FbIndex =0;
 }
 
-void CopyBit::FbCache::insertAndUpdateFbCache(hwc_rect_t dirtyRect) {
+void CopyBit::FbCache::insertAndUpdateFbCache(hwc_rect_t dirtyRect,
+                                             hwc_rect_t displayRect) {
    FbIndex =  FbIndex % NUM_RENDER_BUFFERS;
    FbdirtyRect[FbIndex] = dirtyRect;
+   FbdisplayRect[FbIndex] = displayRect;
    FbIndex++;
 }
 
-int CopyBit::FbCache::getUnchangedFbDRCount(hwc_rect_t dirtyRect){
+int CopyBit::FbCache::getUnchangedFbDRCount(hwc_rect_t dirtyRect,
+                                          hwc_rect_t displayRect){
     int sameDirtyCount = 0;
     for (int i = 0 ; i < NUM_RENDER_BUFFERS ; i++ ){
-      if( FbdirtyRect[i] == dirtyRect)
+      if( FbdirtyRect[i] == dirtyRect &&
+          FbdisplayRect[i] == displayRect)
            sameDirtyCount++;
    }
    return sameDirtyCount;
diff --git a/libhwcomposer/hwc_copybit.h b/libhwcomposer/hwc_copybit.h
index 4442afc..eaf015f 100644
--- a/libhwcomposer/hwc_copybit.h
+++ b/libhwcomposer/hwc_copybit.h
@@ -72,11 +72,14 @@
     /* framebuffer cache*/
     struct FbCache {
       hwc_rect_t  FbdirtyRect[NUM_RENDER_BUFFERS];
+      hwc_rect_t  FbdisplayRect[NUM_RENDER_BUFFERS];
       int FbIndex;
       FbCache();
       void reset();
-      void insertAndUpdateFbCache(hwc_rect_t dirtyRect);
-      int getUnchangedFbDRCount(hwc_rect_t dirtyRect);
+      void insertAndUpdateFbCache(hwc_rect_t dirtyRect,
+                               hwc_rect_t displayRect);
+      int getUnchangedFbDRCount(hwc_rect_t dirtyRect,
+                             hwc_rect_t displayRect);
     };
 
     // holds the copybit device
