| Index: chrome/browser/ui/views/tabs/tab.cc
 | 
| diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
 | 
| index 91b8d2a6d32911cbf7c7f9ed2e97a370035d4eaa..ccd5786c7277f97978889fc4eee313a1241481b4 100644
 | 
| --- a/chrome/browser/ui/views/tabs/tab.cc
 | 
| +++ b/chrome/browser/ui/views/tabs/tab.cc
 | 
| @@ -625,6 +625,17 @@ int Tab::GetImmersiveHeight() {
 | 
|    return kImmersiveTabHeight;
 | 
|  }
 | 
|  
 | 
| +// static
 | 
| +int Tab::GetYOffsetForActiveTabBackground() {
 | 
| +  // The computed value here is strangely less than the height of the area atop
 | 
| +  // the tab that doesn't get a background painted; otherwise, we could compute
 | 
| +  // the value by simply using GetLayoutInsets(TAB).top().  My suspicion is that
 | 
| +  // originally there was some sort of off-by-one error in how this background
 | 
| +  // was painted, and theme authors compensated; now we're stuck perpetuating it
 | 
| +  // as a result.
 | 
| +  return -GetLayoutConstant(TAB_TOP_EXCLUSION_HEIGHT) - 1;
 | 
| +}
 | 
| +
 | 
|  ////////////////////////////////////////////////////////////////////////////////
 | 
|  // Tab, AnimationDelegate overrides:
 | 
|  
 | 
| @@ -1130,9 +1141,10 @@ void Tab::PaintTabBackground(gfx::Canvas* canvas) {
 | 
|    const int kActiveTabFillId = IDR_THEME_TOOLBAR;
 | 
|    const bool has_custom_image =
 | 
|        GetThemeProvider()->HasCustomImage(kActiveTabFillId);
 | 
| +  const int y_offset = GetYOffsetForActiveTabBackground();
 | 
|    if (IsActive()) {
 | 
|      PaintTabBackgroundUsingFillId(canvas, true, kActiveTabFillId,
 | 
| -                                  has_custom_image, 0);
 | 
| +                                  has_custom_image, y_offset);
 | 
|    } else {
 | 
|      if (pinned_title_change_animation_ &&
 | 
|          pinned_title_change_animation_->is_animating())
 | 
| @@ -1145,7 +1157,7 @@ void Tab::PaintTabBackground(gfx::Canvas* canvas) {
 | 
|        canvas->SaveLayerAlpha(gfx::ToRoundedInt(throb_value * 0xff),
 | 
|                               GetLocalBounds());
 | 
|        PaintTabBackgroundUsingFillId(canvas, true, kActiveTabFillId,
 | 
| -                                    has_custom_image, 0);
 | 
| +                                    has_custom_image, y_offset);
 | 
|        canvas->Restore();
 | 
|      }
 | 
|    }
 | 
| @@ -1187,7 +1199,7 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas) {
 | 
|    // should be at the top of the tab. Otherwise, we assume that the background
 | 
|    // image is a composited foreground + frame image.
 | 
|    const int y_offset = GetThemeProvider()->HasCustomImage(fill_id) ?
 | 
| -      0 : background_offset_.y();
 | 
| +      -GetLayoutConstant(TAB_TOP_EXCLUSION_HEIGHT) : background_offset_.y();
 | 
|  
 | 
|    // We only cache the image when it's the default image and we're not hovered,
 | 
|    // to avoid caching a background image that isn't the same for all tabs.
 | 
| 
 |