diff --git a/src/com/android/contacts/list/ShortcutIntentBuilder.java b/src/com/android/contacts/list/ShortcutIntentBuilder.java
index caece67..a1caa15 100644
--- a/src/com/android/contacts/list/ShortcutIntentBuilder.java
+++ b/src/com/android/contacts/list/ShortcutIntentBuilder.java
@@ -30,7 +30,6 @@
 import android.graphics.Rect;
 import android.graphics.Typeface;
 import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.provider.ContactsContract;
@@ -232,7 +231,7 @@
                 (String[]) null);
         shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
-        final Bitmap icon = scaleToAppIconSize(framePhoto(bitmap));
+        final Bitmap icon = scaleToAppIconSize(bitmap);
 
         Intent intent = new Intent();
         intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, icon);
@@ -270,33 +269,6 @@
         mListener.onShortcutIntentCreated(uri, intent);
     }
 
-    private Bitmap framePhoto(Bitmap photo) {
-        final Resources r = mContext.getResources();
-        final Drawable frame = r.getDrawable(com.android.internal.R.drawable.quickcontact_badge);
-
-        final int width = r.getDimensionPixelSize(R.dimen.contact_shortcut_frame_width);
-        final int height = r.getDimensionPixelSize(R.dimen.contact_shortcut_frame_height);
-
-        frame.setBounds(0, 0, width, height);
-
-        final Rect padding = new Rect();
-        frame.getPadding(padding);
-
-        final Rect source = new Rect(0, 0, photo.getWidth(), photo.getHeight());
-        final Rect destination = new Rect(padding.left, padding.top,
-                width - padding.right, height - padding.bottom);
-
-        final int d = Math.max(width, height);
-        final Bitmap b = Bitmap.createBitmap(d, d, Bitmap.Config.ARGB_8888);
-        final Canvas c = new Canvas(b);
-
-        c.translate((d - width) / 2.0f, (d - height) / 2.0f);
-        frame.draw(c);
-        c.drawBitmap(photo, source, destination, new Paint(Paint.FILTER_BITMAP_FLAG));
-
-        return b;
-    }
-
     private Bitmap scaleToAppIconSize(Bitmap photo) {
 
         // Setup the drawing classes
diff --git a/tests/res/layout/quick_contact_tests.xml b/tests/res/layout/quick_contact_tests.xml
index 7687713..fb2d518 100644
--- a/tests/res/layout/quick_contact_tests.xml
+++ b/tests/res/layout/quick_contact_tests.xml
@@ -28,16 +28,19 @@
             android:id="@+id/small_badge1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleWindowSmall"
             android:layout_marginLeft="32dip" />
         <QuickContactBadge
             android:id="@+id/medium_badge1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleWindowMedium"
             android:layout_marginLeft="64dip" />
         <QuickContactBadge
             android:id="@+id/large_badge1"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleWindowLarge"
             android:layout_marginLeft="64dip" />
     </LinearLayout>
     <View
@@ -73,16 +76,19 @@
             android:id="@+id/small_badge2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleSmallWindowSmall"
             android:layout_marginLeft="32dip" />
         <QuickContactBadge
             android:id="@+id/medium_badge2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleSmallWindowMedium"
             android:layout_marginLeft="64dip" />
         <QuickContactBadge
             android:id="@+id/large_badge2"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            style="?android:attr/quickContactBadgeStyleSmallWindowLarge"
             android:layout_marginLeft="64dip" />
     </LinearLayout>
 </LinearLayout>
diff --git a/tests/src/com/android/contacts/tests/quickcontact/QuickContactTestsActivity.java b/tests/src/com/android/contacts/tests/quickcontact/QuickContactTestsActivity.java
index c865680..527d7a3 100644
--- a/tests/src/com/android/contacts/tests/quickcontact/QuickContactTestsActivity.java
+++ b/tests/src/com/android/contacts/tests/quickcontact/QuickContactTestsActivity.java
@@ -25,7 +25,6 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.QuickContact;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.Window;
@@ -65,20 +64,6 @@
         mLargeBadge1 = (QuickContactBadge) findViewById(R.id.large_badge1);
         mLargeBadge2 = (QuickContactBadge) findViewById(R.id.large_badge2);
 
-        mSmallBadge1.setMode(QuickContact.MODE_SMALL);
-        mSmallBadge2.setMode(QuickContact.MODE_SMALL);
-        mMediumBadge1.setMode(QuickContact.MODE_MEDIUM);
-        mMediumBadge2.setMode(QuickContact.MODE_MEDIUM);
-        mLargeBadge1.setMode(QuickContact.MODE_LARGE);
-        mLargeBadge2.setMode(QuickContact.MODE_LARGE);
-
-        mSmallBadge1.setImageResource(R.drawable.ic_contact_picture);
-        mSmallBadge2.setImageResource(R.drawable.ic_contact_picture);
-        mMediumBadge1.setImageResource(R.drawable.ic_contact_picture);
-        mMediumBadge2.setImageResource(R.drawable.ic_contact_picture);
-        mLargeBadge1.setImageResource(R.drawable.ic_contact_picture);
-        mLargeBadge2.setImageResource(R.drawable.ic_contact_picture);
-
         mPickContact.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
