| Index: src/core/SkCanvas.cpp
 | 
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
 | 
| index e53a104c47fa28406f1d440dbcd670365d877a24..5d517801e4affc11b864c5b4edc1430f291f22a6 100644
 | 
| --- a/src/core/SkCanvas.cpp
 | 
| +++ b/src/core/SkCanvas.cpp
 | 
| @@ -3013,6 +3013,9 @@ void SkCanvas::drawDrawable(SkDrawable* dr, const SkMatrix* matrix) {
 | 
|  }
 | 
|  
 | 
|  void SkCanvas::onDrawDrawable(SkDrawable* dr, const SkMatrix* matrix) {
 | 
| +// b/31304115
 | 
| +// We cannot trust that the clip bounds are set correctly by the framework.
 | 
| +#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
 | 
|      SkRect bounds = dr->getBounds();
 | 
|      if (matrix) {
 | 
|          matrix->mapRect(&bounds);
 | 
| @@ -3020,6 +3023,8 @@ void SkCanvas::onDrawDrawable(SkDrawable* dr, const SkMatrix* matrix) {
 | 
|      if (this->quickReject(bounds)) {
 | 
|          return;
 | 
|      }
 | 
| +#endif
 | 
| +
 | 
|      dr->draw(this, matrix);
 | 
|  }
 | 
|  
 | 
| 
 |