diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 94d3185..dbd7592 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -160,6 +160,8 @@
         // TODO: get those values from XML.
         ImageZoom.setZoomedSize(getPixelsFromDip(256));
         FramedTextButton.setTextSize((int) getPixelsFromDip(14));
+        FramedTextButton.setTrianglePadding((int) getPixelsFromDip(4));
+        FramedTextButton.setTriangleSize((int) getPixelsFromDip(10));
         ImageShow.setTextSize((int) getPixelsFromDip(12));
         ImageShow.setTextPadding((int) getPixelsFromDip(10));
         ImageShow.setOriginalTextMargin((int) getPixelsFromDip(4));
diff --git a/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java b/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
index 17453d0..c717b6e 100644
--- a/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
+++ b/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
@@ -20,6 +20,7 @@
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Paint;
+import android.graphics.Path;
 import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.widget.ImageButton;
@@ -32,6 +33,10 @@
     private static int mTextSize = 24;
     private static int mTextPadding = 20;
     private static Paint gPaint = new Paint();
+    private static Path gPath = new Path();
+    private static int mTrianglePadding = 2;
+    private static int mTriangleSize = 30;
+
     private Context mContext = null;
 
     public static void setTextSize(int value) {
@@ -42,6 +47,14 @@
         mTextPadding = value;
     }
 
+    public static void setTrianglePadding(int value) {
+        mTrianglePadding = value;
+    }
+
+    public static void setTriangleSize(int value) {
+        mTriangleSize = value;
+    }
+
     public void setText(String text) {
         mText = text;
         invalidate();
@@ -84,11 +97,25 @@
 
     @Override
     public void onDraw(Canvas canvas) {
-        gPaint.setARGB(255, 255, 255, 255);
+        gPaint.setARGB(96, 255, 255, 255);
         gPaint.setStrokeWidth(2);
         gPaint.setStyle(Paint.Style.STROKE);
-        canvas.drawRect(mTextPadding, mTextPadding, getWidth() - mTextPadding,
-                getHeight() - mTextPadding, gPaint);
+        int w = getWidth();
+        int h = getHeight();
+        canvas.drawRect(mTextPadding, mTextPadding, w - mTextPadding,
+                h - mTextPadding, gPaint);
+        gPath.reset();
+        gPath.moveTo(w - mTextPadding - mTrianglePadding - mTriangleSize,
+                     h - mTextPadding - mTrianglePadding);
+        gPath.lineTo(w - mTextPadding - mTrianglePadding,
+                     h - mTextPadding - mTrianglePadding - mTriangleSize);
+        gPath.lineTo(w - mTextPadding - mTrianglePadding,
+                     h - mTextPadding - mTrianglePadding);
+        gPath.close();
+        gPaint.setARGB(128, 255, 255, 255);
+        gPaint.setStrokeWidth(1);
+        gPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+        canvas.drawPath(gPath, gPaint);
         if (mText != null) {
             gPaint.reset();
             gPaint.setARGB(255, 255, 255, 255);
@@ -96,8 +123,8 @@
             float textWidth = gPaint.measureText(mText);
             Rect bounds = new Rect();
             gPaint.getTextBounds(mText, 0, mText.length(), bounds);
-            int x = (int) ((getWidth() - textWidth) / 2);
-            int y = (getHeight() + bounds.height()) / 2;
+            int x = (int) ((w - textWidth) / 2);
+            int y = (h + bounds.height()) / 2;
 
             canvas.drawText(mText, x, y, gPaint);
         }
