diff --git a/src/android/src/com/google/android/inputmethod/japanese/view/SymbolMajorCategoryButtonDrawableFactory.java b/src/android/src/com/google/android/inputmethod/japanese/view/SymbolMajorCategoryButtonDrawableFactory.java
index 133c648..a917a2b 100644
--- a/src/android/src/com/google/android/inputmethod/japanese/view/SymbolMajorCategoryButtonDrawableFactory.java
+++ b/src/android/src/com/google/android/inputmethod/japanese/view/SymbolMajorCategoryButtonDrawableFactory.java
@@ -35,14 +35,17 @@
 import com.google.common.base.Preconditions;
 
 import android.content.res.Resources;
+import android.graphics.BlurMaskFilter;
+import android.graphics.BlurMaskFilter.Blur;
 import android.graphics.Canvas;
+import android.graphics.Color;
 import android.graphics.LinearGradient;
 import android.graphics.Paint;
+import android.graphics.Paint.Style;
 import android.graphics.Path;
 import android.graphics.Path.Direction;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.graphics.Shader;
 import android.graphics.Shader.TileMode;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
@@ -141,21 +144,32 @@
 
   private static class ButtonDrawable extends BaseBackgroundDrawable {
 
+    private static final int BLUR_SIZE = 3;
+
     private final PathFactory pathFactory;
     private final int topColor;
     private final int bottomColor;
-    private final int shadowColor;
 
-    private final Paint paint = new Paint();
+    private final Paint backgroundPaint = new Paint();
+    private final Optional<Paint> shadowPaint;
     private Optional<Path> path = Optional.absent();
-    private Optional<Shader> shader = Optional.absent();
 
     ButtonDrawable(PathFactory pathFactory, int topColor, int bottomColor, int shadowColor) {
       super(0, 0, 0, 0);  // No padding.
       this.pathFactory = Preconditions.checkNotNull(pathFactory);
       this.topColor = topColor;
       this.bottomColor = bottomColor;
-      this.shadowColor = shadowColor;
+
+      backgroundPaint.setAntiAlias(true);
+
+      if (Color.alpha(shadowColor) != 0) {
+        shadowPaint = Optional.of(new Paint());
+        shadowPaint.get().setColor(shadowColor);
+        shadowPaint.get().setStyle(Style.FILL);
+        shadowPaint.get().setMaskFilter(new BlurMaskFilter(BLUR_SIZE, Blur.NORMAL));
+      } else {
+        shadowPaint = Optional.absent();
+      }
     }
 
     @Override
@@ -164,26 +178,17 @@
         return;
       }
 
-      Paint paint = this.paint;
-      if ((shadowColor & 0xFF000000) != 0) {
-        paint.reset();
-        paint.setAntiAlias(true);
-        paint.setColor(shadowColor);
+      if (shadowPaint.isPresent()) {
         int saveCount = canvas.save();
         try {
-          canvas.translate(1, 1);
-          canvas.drawPath(path.get(), paint);
+          canvas.translate(0, 2);
+          canvas.drawPath(path.get(), shadowPaint.get());
         } finally {
           canvas.restoreToCount(saveCount);
         }
       }
 
-      paint.reset();
-      paint.setAntiAlias(true);
-      if (shader.isPresent()) {
-        paint.setShader(shader.get());
-      }
-      canvas.drawPath(path.get(), paint);
+      canvas.drawPath(path.get(), backgroundPaint);
     }
 
     @Override
@@ -192,12 +197,12 @@
 
       if (isCanvasRectEmpty()) {
         path = Optional.absent();
-        shader = Optional.absent();
+        backgroundPaint.setShader(null);
         return;
       }
 
       path = Optional.of(pathFactory.newInstance(bounds));
-      shader = Optional.<Shader>of(new LinearGradient(
+      backgroundPaint.setShader(new LinearGradient(
           0, bounds.top, 0, bounds.bottom - 1, topColor, bottomColor, TileMode.CLAMP));
     }
   }
diff --git a/src/android/static_resources/resources_oss/res/xml/skin_blue_darkgray.xml b/src/android/static_resources/resources_oss/res/xml/skin_blue_darkgray.xml
index 64ed64d..b76d602 100644
--- a/src/android/static_resources/resources_oss/res/xml/skin_blue_darkgray.xml
+++ b/src/android/static_resources/resources_oss/res/xml/skin_blue_darkgray.xml
@@ -355,7 +355,7 @@
         android:color="#FF828282" />
     <Color
         android:name="symbolMajorButtonShadowColor"
-        android:color="#57000000" />
+        android:color="#FF1E1E1E" />
     <Color
         android:name="keyboardFoldingButtonBackgroundDefaultColor"
         android:color="#8C676767" />
@@ -425,7 +425,7 @@
         <inset android:drawable="@drawable/window_background_black" />
     </Drawable>
     <Drawable android:name="narrowFrameBackgroundDrawable" >
-        <color android:color="#524C51" />
+        <inset android:drawable="@drawable/window_background_black" />
     </Drawable>
     <Drawable
         android:name="keyboardFrameSeparatorBackgroundDrawable" >
diff --git a/src/android/static_resources/resources_oss/res/xml/skin_blue_lightgray.xml b/src/android/static_resources/resources_oss/res/xml/skin_blue_lightgray.xml
index 635cd78..1cde44c 100644
--- a/src/android/static_resources/resources_oss/res/xml/skin_blue_lightgray.xml
+++ b/src/android/static_resources/resources_oss/res/xml/skin_blue_lightgray.xml
@@ -355,7 +355,7 @@
         android:color="#FF828282" />
     <Color
         android:name="symbolMajorButtonShadowColor"
-        android:color="#57000000" />
+        android:color="#FF1E1E1E" />
     <Color
         android:name="keyboardFoldingButtonBackgroundDefaultColor"
         android:color="#8C676767" />
diff --git a/src/android/static_resources/resources_oss/res/xml/skin_orange_lightgray.xml b/src/android/static_resources/resources_oss/res/xml/skin_orange_lightgray.xml
index 35a5523..d8b3c85 100644
--- a/src/android/static_resources/resources_oss/res/xml/skin_orange_lightgray.xml
+++ b/src/android/static_resources/resources_oss/res/xml/skin_orange_lightgray.xml
@@ -355,7 +355,7 @@
         android:color="#FF828282" />
     <Color
         android:name="symbolMajorButtonShadowColor"
-        android:color="#57000000" />
+        android:color="#FF1E1E1E" />
     <Color
         android:name="keyboardFoldingButtonBackgroundDefaultColor"
         android:color="#8C676767" />
diff --git a/src/mozc_version_template.txt b/src/mozc_version_template.txt
index ba6be70..0593889 100644
--- a/src/mozc_version_template.txt
+++ b/src/mozc_version_template.txt
@@ -1,6 +1,6 @@
 MAJOR=2
 MINOR=16
-BUILD=2008
+BUILD=2009
 REVISION=102
 # NACL_DICTIONARY_VERSION is the target version of the system dictionary to be
 # downloaded by NaCl Mozc.
