diff --git a/res/layout/tab_title.xml b/res/layout/tab_title.xml
index 57251d9..af78411 100644
--- a/res/layout/tab_title.xml
+++ b/res/layout/tab_title.xml
@@ -62,5 +62,5 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:contentDescription="@string/accessibility_button_closetab"
-        android:src="@drawable/ic_tab_close" />
+        android:src="@drawable/ic_action_stop" />
 </merge>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 106c803..d97a286 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -26,7 +26,7 @@
     <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.Light.DialogWhenLarge" >
         <item name="android:windowActionBar">false</item>
     </style>
-    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
+    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
         <item name="android:displayOptions"></item>
     </style>
     <style name="PopupMenuStyle" parent="@android:style/Widget.Holo.Light.PopupMenu">
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index c8a4815..8aa6995 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -25,10 +25,12 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Path;
+import android.graphics.Shader;
 import android.graphics.drawable.Drawable;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -76,8 +78,8 @@
     private final Matrix mActiveMatrix = new Matrix();
     private final Matrix mInactiveMatrix = new Matrix();
 
-    ///private BitmapShader mActiveShader;
-    ///private BitmapShader mInactiveShader;
+    private BitmapShader mActiveShader;
+    private BitmapShader mInactiveShader;
 
     private int mTabOverlap;
     private int mAddTabOverlap;
@@ -337,7 +339,7 @@
             setFocusPath(mFocusPath, 0, 0, r - l, b - t);
         }
 
-        /*@Override
+        @Override
         protected void dispatchDraw(Canvas canvas) {
             if (mCurrentTextureWidth != mUi.getContentWidth() ||
                     mCurrentTextureHeight != getHeight()) {
@@ -345,10 +347,14 @@
                 mCurrentTextureHeight = getHeight();
 
                 if (mCurrentTextureWidth > 0 && mCurrentTextureHeight > 0) {
-                    Bitmap activeTexture = getDrawableAsBitmap(mActiveDrawable,
-                            mCurrentTextureWidth, mCurrentTextureHeight);
-                    Bitmap inactiveTexture = getDrawableAsBitmap(mInactiveDrawable,
-                            mCurrentTextureWidth, mCurrentTextureHeight);
+                    Bitmap activeTexture = Bitmap.createBitmap(
+                            mCurrentTextureWidth, mCurrentTextureHeight, Bitmap.Config.ARGB_8888);
+                    activeTexture.eraseColor(getResources().
+                            getColor(R.color.NavigationBarBackground));
+                    Bitmap inactiveTexture = Bitmap.createBitmap(
+                            mCurrentTextureWidth, mCurrentTextureHeight, Bitmap.Config.ARGB_8888);
+                    inactiveTexture.eraseColor(getResources().
+                            getColor(R.color.TabNavBackgroundColor));
 
                     mActiveShader = new BitmapShader(activeTexture,
                             Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
@@ -379,7 +385,7 @@
             if (isFocused()) {
                 canvas.drawPath(mFocusPath, mFocusPaint);
             }
-        }*/
+        }
 
         private void setTabPath(Path path, int l, int t, int r, int b) {
             path.reset();
