diff --git a/res/drawable-land/spinner_dropdown_background_down.9.png b/res/drawable-land/spinner_dropdown_background_down.9.png
new file mode 100644
index 0000000..bb64b78
--- /dev/null
+++ b/res/drawable-land/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/res/drawable-land/spinner_dropdown_background_up.9.png b/res/drawable-land/spinner_dropdown_background_up.9.png
new file mode 100644
index 0000000..c0e2a66
--- /dev/null
+++ b/res/drawable-land/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/res/drawable/spinner_dropdown_background.xml b/res/drawable/spinner_dropdown_background.xml
new file mode 100644
index 0000000..9c37286
--- /dev/null
+++ b/res/drawable/spinner_dropdown_background.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_above_anchor="true"
+        android:drawable="@drawable/spinner_dropdown_background_up" />
+    <item android:drawable="@drawable/spinner_dropdown_background_down" />
+</selector>
+
diff --git a/res/drawable/spinner_dropdown_background_down.9.png b/res/drawable/spinner_dropdown_background_down.9.png
new file mode 100644
index 0000000..9cb5556
--- /dev/null
+++ b/res/drawable/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/res/drawable/spinner_dropdown_background_up.9.png b/res/drawable/spinner_dropdown_background_up.9.png
new file mode 100644
index 0000000..5c93f78
--- /dev/null
+++ b/res/drawable/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/res/layout/widget_search.xml b/res/layout/widget_search.xml
index f87d30f..1db8488 100644
--- a/res/layout/widget_search.xml
+++ b/res/layout/widget_search.xml
@@ -42,6 +42,8 @@
         android:inputType="textAutoComplete"
         android:imeOptions="actionSearch"
         android:lines="1"
+        android:dropDownWidth="fill_parent"
+        android:popupBackground="@drawable/spinner_dropdown_background"
         />
         
      <ImageButton android:id="@+id/search_go_btn"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
new file mode 100644
index 0000000..4ae6686
--- /dev/null
+++ b/res/values/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <dimen name="search_widget_inset">19dip</dimen>
+</resources>
diff --git a/src/com/android/launcher/Search.java b/src/com/android/launcher/Search.java
index 97dcd98..71ab7ef 100644
--- a/src/com/android/launcher/Search.java
+++ b/src/com/android/launcher/Search.java
@@ -329,6 +329,33 @@
     }
     
     /**
+     * Cache of popup padding value after read from {@link Resources}.
+     */
+    private static float mPaddingInset = -1;
+    
+    /**
+     * When our size is changed, pass down adjusted width and offset values to
+     * correctly center the {@link AutoCompleteTextView} popup and include our
+     * padding.
+     */
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+        if (changed) {
+            if (mPaddingInset == -1) {
+                mPaddingInset = getResources().getDimension(R.dimen.search_widget_inset);
+            }
+            
+            // Fill entire width of widget, minus padding inset
+            float paddedWidth = getWidth() - (mPaddingInset * 2);
+            float paddedOffset = -(mSearchText.getLeft() - mPaddingInset);
+                
+            mSearchText.setDropDownWidth((int) paddedWidth);
+            mSearchText.setDropDownHorizontalOffset((int) paddedOffset);
+        }
+    }
+    
+    /**
      * Read the searchable info from the search manager
      */
     private void configureSearchableInfo() {
