| Index: src/core/SkRecordDraw.cpp | 
| diff --git a/src/core/SkRecordDraw.cpp b/src/core/SkRecordDraw.cpp | 
| index bc5e7eb63feef19b231e4834f6c5a0ef3a8a1949..fda848835f37bc5fc5e2a7de99d4c0487ef76989 100644 | 
| --- a/src/core/SkRecordDraw.cpp | 
| +++ b/src/core/SkRecordDraw.cpp | 
| @@ -17,13 +17,15 @@ void SkRecordDraw(const SkRecord& record, | 
| if (NULL != bbh) { | 
| // Draw only ops that affect pixels in the canvas's current clip. | 
| SkIRect query; | 
| -#if 1   // TODO: Why is this the right way to make the query?  I'd think it'd be the else branch. | 
| -        SkRect clipBounds; | 
| -        canvas->getClipBounds(&clipBounds); | 
| + | 
| +        // The SkRecord and BBH were recorded in identity space.  This canvas | 
| +        // is not necessarily in that same space.  getClipBounds() returns us | 
| +        // this canvas' clip bounds transformed back into identity space, which | 
| +        // lets us query the BBH. | 
| +        SkRect clipBounds = { 0, 0, 0, 0 }; | 
| +        (void)canvas->getClipBounds(&clipBounds); | 
| clipBounds.roundOut(&query); | 
| -#else | 
| -        canvas->getClipDeviceBounds(&query); | 
| -#endif | 
| + | 
| SkTDArray<void*> ops; | 
| bbh->search(query, &ops); | 
|  | 
|  |