diff --git a/src/com/android/contacts/model/HardCodedSources.java b/src/com/android/contacts/model/HardCodedSources.java
index 7a8c30c..fb00639 100644
--- a/src/com/android/contacts/model/HardCodedSources.java
+++ b/src/com/android/contacts/model/HardCodedSources.java
@@ -485,8 +485,7 @@
             final boolean validString = mStringRes > 0;
             final boolean validColumn = index != -1;
 
-            final CharSequence stringValue = validString ? context.getPackageManager().getText(
-                    mPackageName, mStringRes, null) : null;
+            final CharSequence stringValue = validString ? context.getText(mStringRes) : null;
             final CharSequence columnValue = validColumn ? cursor.getString(index) : null;
 
             if (validString && validColumn) {
diff --git a/src/com/android/contacts/ui/FastTrackWindow.java b/src/com/android/contacts/ui/FastTrackWindow.java
index 9487e15..5aadcaf 100644
--- a/src/com/android/contacts/ui/FastTrackWindow.java
+++ b/src/com/android/contacts/ui/FastTrackWindow.java
@@ -101,6 +101,7 @@
     private final WindowManager mWindowManager;
     private Window mWindow;
     private View mDecor;
+    private final Rect mRect = new Rect();
 
     private boolean mQuerying = false;
     private boolean mShowing = false;
@@ -333,9 +334,7 @@
 
         }
 
-        l.flags = WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
-                | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
-                | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
+        l.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
                 | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
 
         mWindowManager.addView(mDecor, l);
@@ -1083,8 +1082,25 @@
         return false;
     }
 
+    /**
+     * Detect if the given {@link MotionEvent} is outside the boundaries of this
+     * window, which usually means we should dismiss.
+     */
+    protected void detectEventOutside(MotionEvent event) {
+        if (event.getAction() == MotionEvent.ACTION_DOWN) {
+            // Only try detecting outside events on down-press
+            mDecor.getHitRect(mRect);
+            final int x = (int)event.getX();
+            final int y = (int)event.getY();
+            if (!mRect.contains(x, y)) {
+                event.setAction(MotionEvent.ACTION_OUTSIDE);
+            }
+        }
+    }
+
     /** {@inheritDoc} */
     public boolean dispatchTouchEvent(MotionEvent event) {
+        detectEventOutside(event);
         if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
             dismiss();
             return true;
