diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a6ba436..643f85c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1981,8 +1981,7 @@
         </activity>
 
         <activity android:name=".development.AppPicker"
-                  android:label="@string/select_application"
-                  android:theme="@android:style/Theme.DeviceDefault.Light.Dialog" />
+                  android:label="@string/select_application" />
 
         <activity android:name=".development.DSULoader"
                   android:label="Select DSU Package"
diff --git a/src/com/android/settings/development/AppPicker.java b/src/com/android/settings/development/AppPicker.java
index d819bc2..8e927db 100644
--- a/src/com/android/settings/development/AppPicker.java
+++ b/src/com/android/settings/development/AppPicker.java
@@ -26,6 +26,7 @@
 import android.os.Bundle;
 import android.os.Process;
 import android.view.LayoutInflater;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
@@ -54,6 +55,7 @@
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        getActionBar().setDisplayHomeAsUpEnabled(true);
 
         mPermissionName = getIntent().getStringExtra(EXTRA_REQUESTIING_PERMISSION);
         mDebuggableOnly = getIntent().getBooleanExtra(EXTRA_DEBUGGABLE, false);
@@ -68,6 +70,15 @@
     }
 
     @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            handleBackPressed();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
         MyApplicationInfo app = mAdapter.getItem(position);
         Intent intent = new Intent();
@@ -76,6 +87,15 @@
         finish();
     }
 
+    private void handleBackPressed() {
+        if (getFragmentManager().getBackStackEntryCount() > 1) {
+            super.onBackPressed();
+        } else {
+            setResult(RESULT_CANCELED);
+            finish();
+        }
+    }
+
     class MyApplicationInfo {
         ApplicationInfo info;
         CharSequence label;
@@ -162,6 +182,7 @@
                 holder.summary.setText("");
             }
             holder.disabled.setVisibility(View.GONE);
+            holder.widget.setVisibility(View.GONE);
             return convertView;
         }
     }
diff --git a/src/com/android/settings/development/AppViewHolder.java b/src/com/android/settings/development/AppViewHolder.java
index 1082efe..4deef90 100644
--- a/src/com/android/settings/development/AppViewHolder.java
+++ b/src/com/android/settings/development/AppViewHolder.java
@@ -32,6 +32,7 @@
     public ImageView appIcon;
     public TextView summary;
     public TextView disabled;
+    public View widget;
 
     static public AppViewHolder createOrRecycle(LayoutInflater inflater, View convertView) {
         if (convertView == null) {
@@ -45,6 +46,7 @@
             holder.appIcon = convertView.findViewById(android.R.id.icon);
             holder.summary = convertView.findViewById(android.R.id.summary);
             holder.disabled = convertView.findViewById(R.id.appendix);
+            holder.widget = convertView.findViewById(android.R.id.widget_frame);
             convertView.setTag(holder);
             return holder;
         } else {
