diff --git a/src/com/android/gallery3d/filtershow/category/CategoryView.java b/src/com/android/gallery3d/filtershow/category/CategoryView.java
index 84a973b..059eb10 100644
--- a/src/com/android/gallery3d/filtershow/category/CategoryView.java
+++ b/src/com/android/gallery3d/filtershow/category/CategoryView.java
@@ -44,6 +44,8 @@
     private Paint mSelectPaint;
     CategoryAdapter mAdapter;
     private int mSelectionStroke;
+    private Paint mBorderPaint;
+    private int mBorderStroke;
 
     public static void setTextSize(int size) {
         sTextSize = size;
@@ -63,6 +65,9 @@
         mSelectPaint = new Paint();
         mSelectPaint.setStyle(Paint.Style.FILL);
         mSelectPaint.setColor(res.getColor(R.color.filtershow_category_selection));
+        mBorderPaint = new Paint(mSelectPaint);
+        mBorderPaint.setColor(Color.BLACK);
+        mBorderStroke = mSelectionStroke / 3;
     }
 
     public void drawText(Canvas canvas, String text) {
@@ -91,8 +96,10 @@
                 Bitmap bitmap = mAction.getImage();
                 canvas.drawBitmap(bitmap, 0, 0, mPaint);
                 if (mAdapter.isSelected(this)) {
-                    SelectionRenderer.drawSelection(canvas, 0, 0, bitmap.getWidth(),
-                            bitmap.getHeight(), mSelectionStroke, mSelectPaint);
+                    SelectionRenderer.drawSelection(canvas, 0, 0,
+                            Math.min(bitmap.getWidth(), getWidth()),
+                            Math.min(bitmap.getHeight(), getHeight()),
+                            mSelectionStroke, mSelectPaint, mBorderStroke, mBorderPaint);
                 }
             }
             mPaint.setColor(mBackgroundColor);
diff --git a/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java b/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java
index 1b108bd..ef40c5e 100644
--- a/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java
+++ b/src/com/android/gallery3d/filtershow/ui/SelectionRenderer.java
@@ -29,4 +29,20 @@
         canvas.drawRect(right - stroke, top, right, bottom, paint);
     }
 
+    public static void drawSelection(Canvas canvas, int left, int top, int right, int bottom,
+            int stroke, Paint selectPaint, int border, Paint borderPaint) {
+        canvas.drawRect(left, top, right, top + stroke, selectPaint);
+        canvas.drawRect(left, bottom - stroke, right, bottom, selectPaint);
+        canvas.drawRect(left, top, left + stroke, bottom, selectPaint);
+        canvas.drawRect(right - stroke, top, right, bottom, selectPaint);
+        canvas.drawRect(left + stroke, top + stroke, right - stroke,
+                top + stroke + border, borderPaint);
+        canvas.drawRect(left + stroke, bottom - stroke - border, right - stroke,
+                bottom - stroke, borderPaint);
+        canvas.drawRect(left + stroke, top + stroke, left + stroke + border,
+                bottom - stroke, borderPaint);
+        canvas.drawRect(right - stroke - border, top + stroke, right - stroke,
+                bottom - stroke, borderPaint);
+    }
+
 }
