diff --git a/browser/base/content/browser-customization.js b/browser/base/content/browser-customization.js
index 5867564e49434c8962683d8ba9b50a7cb4dbf335..213271cd6a932c85f8f3029e3187b56616cb8e91 100644
--- a/browser/base/content/browser-customization.js
+++ b/browser/base/content/browser-customization.js
@@ -41,14 +41,6 @@ var CustomizationHandler = {
     CombinedStopReload.uninit();
     PlacesToolbarHelper.customizeStart();
     DownloadsButton.customizeStart();
-
-    // The additional padding on the sides of the browser
-    // can cause the customize tab to get clipped.
-    let tabContainer = gBrowser.tabContainer;
-    if (tabContainer.getAttribute("overflow") == "true") {
-      let tabstrip = tabContainer.mTabstrip;
-      tabstrip.ensureElementIsVisible(gBrowser.selectedTab, true);
-    }
   },
 
   _customizationEnding(aDetails) {
diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml
index 5f8fd159fb6239a02da42296aa061fd2a71beb5e..ce1b547f9c5358da0f3ed73021f14555c2f9eeb5 100644
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -3558,7 +3558,7 @@
               this.showTab(tab);
           }
 
-          this.tabContainer._handleTabSelect(false);
+          this.tabContainer._handleTabSelect(true);
         ]]>
         </body>
       </method>
@@ -3768,7 +3768,7 @@
           if (wasFocused)
             this.mCurrentTab.focus();
 
-          this.tabContainer._handleTabSelect(false);
+          this.tabContainer._handleTabSelect(true);
 
           if (aTab.pinned)
             this.tabContainer._positionPinnedTabs();
@@ -5896,7 +5896,7 @@
         var tabs = document.getBindingParent(this);
         tabs.setAttribute("overflow", "true");
         tabs._positionPinnedTabs();
-        tabs._handleTabSelect(false);
+        tabs._handleTabSelect(true);
       ]]></handler>
     </handlers>
   </binding>
@@ -6253,10 +6253,10 @@
       </method>
 
       <method name="_handleTabSelect">
-        <parameter name="aSmoothScroll"/>
+        <parameter name="aInstant"/>
         <body><![CDATA[
           if (this.getAttribute("overflow") == "true")
-            this.mTabstrip.ensureElementIsVisible(this.selectedItem, aSmoothScroll);
+            this.mTabstrip.ensureElementIsVisible(this.selectedItem, aInstant);
         ]]></body>
       </method>
 
diff --git a/browser/components/places/content/menu.xml b/browser/components/places/content/menu.xml
index edc987236bdb8d0ead416c49710e794069375f6a..acbd70def7d0a30a5d0d5b1d238d45ef2081ef96 100644
--- a/browser/components/places/content/menu.xml
+++ b/browser/components/places/content/menu.xml
@@ -420,7 +420,7 @@
           scrollDir = 1;
         }
         if (scrollDir != 0) {
-          this._scrollBox.scrollByIndex(scrollDir, false);
+          this._scrollBox.scrollByIndex(scrollDir, true);
         }
 
         // Check if we should hide the drop indicator for this target.
diff --git a/toolkit/content/widgets/scrollbox.xml b/toolkit/content/widgets/scrollbox.xml
index 50c3ade864a80845f1fc9a9f2d1eda3353cd9aa2..8fcb1b86333e9c9c36da033506486ddf60ead833 100644
--- a/toolkit/content/widgets/scrollbox.xml
+++ b/toolkit/content/widgets/scrollbox.xml
@@ -165,33 +165,6 @@
         ]]></getter>
       </property>
 
-      <property name="scrollPaddingRect" readonly="true">
-        <getter><![CDATA[
-          // This assumes that this._scrollbox doesn't have any border.
-          var outerRect = this.scrollClientRect;
-          var innerRect = {};
-          innerRect.left = outerRect.left - this._scrollbox.scrollLeft;
-          innerRect.top = outerRect.top - this._scrollbox.scrollTop;
-          innerRect.right = innerRect.left + this._scrollbox.scrollWidth;
-          innerRect.bottom = innerRect.top + this._scrollbox.scrollHeight;
-          return innerRect;
-        ]]></getter>
-      </property>
-      <property name="scrollPosition">
-        <getter><![CDATA[
-          return this.orient == "vertical" ?
-                 this._scrollbox.scrollTop :
-                 this._scrollbox.scrollLeft;
-        ]]></getter>
-        <setter><![CDATA[
-          if (this.orient == "vertical")
-            this._scrollbox.scrollTop = val;
-          else
-            this._scrollbox.scrollLeft = val;
-          return val;
-        ]]></setter>
-      </property>
-
       <field name="_startEndProps"><![CDATA[
         this.orient == "vertical" ? ["top", "bottom"] : ["left", "right"];
       ]]></field>
@@ -241,18 +214,18 @@
 
       <method name="ensureElementIsVisible">
         <parameter name="element"/>
-        <parameter name="aSmoothScroll"/>
+        <parameter name="aInstant"/>
         <body><![CDATA[
           if (!this._canScrollToElement(element))
             return;
 
-          element.scrollIntoView({ behavior: aSmoothScroll == false ? "instant" : "auto" });
+          element.scrollIntoView({ behavior: aInstant ? "instant" : "auto" });
         ]]></body>
       </method>
 
       <method name="scrollByIndex">
         <parameter name="index"/>
-        <parameter name="aSmoothScroll"/>
+        <parameter name="aInstant"/>
         <body><![CDATA[
           if (index == 0)
             return;
@@ -264,7 +237,7 @@
             let elements = this._getScrollableElements();
             if (this._scrollTarget != elements[0] &&
                 this._scrollTarget != elements[elements.length - 1])
-              this.ensureElementIsVisible(this._scrollTarget, false);
+              this.ensureElementIsVisible(this._scrollTarget, true);
           }
 
           var rect = this.scrollClientRect;
@@ -292,13 +265,13 @@
           if (!targetElement)
             return;
 
-          this.ensureElementIsVisible(targetElement, aSmoothScroll);
+          this.ensureElementIsVisible(targetElement, aInstant);
         ]]></body>
       </method>
 
       <method name="scrollByPage">
         <parameter name="pageDelta"/>
-        <parameter name="aSmoothScroll"/>
+        <parameter name="aInstant"/>
         <body><![CDATA[
           if (pageDelta == 0)
             return;
@@ -309,7 +282,7 @@
             let elements = this._getScrollableElements();
             if (this._scrollTarget != elements[0] &&
                 this._scrollTarget != elements[elements.length - 1])
-              this.ensureElementIsVisible(this._scrollTarget, false);
+              this.ensureElementIsVisible(this._scrollTarget, true);
           }
 
           var [start, end] = this._startEndProps;
@@ -346,7 +319,7 @@
           if (!targetElement)
             return;
 
-          this.ensureElementIsVisible(targetElement, aSmoothScroll);
+          this.ensureElementIsVisible(targetElement, aInstant);
         ]]></body>
       </method>
 
@@ -424,9 +397,12 @@
       </method>
 
       <method name="scrollByPixels">
-        <parameter name="px"/>
+        <parameter name="aPixels"/>
+        <parameter name="aInstant"/>
         <body><![CDATA[
-          this.scrollPosition += px;
+          let scrollOptions = { behavior: aInstant ? "instant" : "auto" };
+          scrollOptions[this._startEndProps[0]] = aPixels;
+          this._scrollbox.scrollBy(scrollOptions);
         ]]></body>
       </method>
 
@@ -502,6 +478,7 @@
     <handlers>
       <handler event="wheel"><![CDATA[
         let doScroll = false;
+        let instant;
         let scrollAmount = 0;
         if (this.orient == "vertical") {
           doScroll = true;
@@ -526,12 +503,14 @@
 
           if (this._prevMouseScrolls.every(prev => prev == isVertical)) {
             doScroll = true;
-            if (event.deltaMode == event.DOM_DELTA_PIXEL)
+            if (event.deltaMode == event.DOM_DELTA_PIXEL) {
               scrollAmount = scrollByDelta;
-            else if (event.deltaMode == event.DOM_DELTA_PAGE)
+              instant = true;
+            } else if (event.deltaMode == event.DOM_DELTA_PAGE) {
               scrollAmount = scrollByDelta * this.scrollClientSize;
-            else
+            } else {
               scrollAmount = scrollByDelta * this.lineScrollAmount;
+            }
           }
 
           if (this._prevMouseScrolls.length > 1)
@@ -540,7 +519,7 @@
         }
 
         if (doScroll) {
-          this.scrollByPixels(scrollAmount);
+          this.scrollByPixels(scrollAmount, instant);
         }
 
         event.stopPropagation();
@@ -570,7 +549,7 @@
                 : event.touches[0].screenX);
           var delta = this._touchStart - touchPoint;
           if (Math.abs(delta) > 0) {
-            this.scrollByPixels(delta);
+            this.scrollByPixels(delta, true);
             this._touchStart = touchPoint;
           }
           event.preventDefault();