     }
 
     func enterOverlayMode(locationText: String?, pasted: Bool) {
+
+        // Show the overlay mode UI, which includes hiding the locationView and replacing it
+        // with the editable locationTextField.
+        animateToOverlayState(overlayMode: true)
+
+        delegate?.urlBarDidEnterOverlayMode(self)
+
+        // Bug 1193755 Workaround - Calling become first responder before the animation happens
+        // does this weird thing where it won't take in the initial frame of the label into consideration
+        // which makes the label look squished at the start of the animation and expand to be correct. As a workaround,
+        // I've pushed the become first responder as the next event on UI thread so the animation starts before we 
+        // set a first responder
         if pasted {
             // Clear any existing text, focus the field, then set the actual pasted text.
             // This avoids highlighting all of the text.
-            locationTextField.text = ""
-            locationTextField.becomeFirstResponder()
-            locationTextField.text = locationText
+            self.locationTextField.text = ""
+            dispatch_async(dispatch_get_main_queue()) {
+                self.locationTextField.becomeFirstResponder()
+                self.locationTextField.text = locationText
+            }
         } else {
             // Copy the current URL to the editable text field, then activate it.
-            locationTextField.text = locationText
-            locationTextField.becomeFirstResponder()
-        }
-
-        // Show the overlay mode UI, which includes hiding the locationView and replacing it
-        // with the editable locationTextField.
-        animateToOverlayState(overlayMode: true)
-
-        delegate?.urlBarDidEnterOverlayMode(self)
+            self.locationTextField.text = locationText
+            dispatch_async(dispatch_get_main_queue()) {
+                self.locationTextField.becomeFirstResponder()
+            }
+        }
     }
 
     func leaveOverlayMode(didCancel cancel: Bool = false) {

        layoutIfNeeded()

        inOverlayMode = overlay

        UIView.animateWithDuration(0.3, delay: 0.0, usingSpringWithDamping: 0.85, initialSpringVelocity: 0.0, options: nil, animations: { _ in
            self.transitionToOverlay(didCancel: cancel)

        self.bringSubviewToFront(self.locationContainer)
        self.cancelButton.hidden = false
        self.progressBar.hidden = false
        self.shareButton.hidden = !self.toolbarIsShowing
        self.bookmarkButton.hidden = !self.toolbarIsShowing
        self.forwardButton.hidden = !self.toolbarIsShowing
