diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
index 2f9a670..3536abc 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java
@@ -45,9 +45,9 @@
 import com.google.gerrit.client.ui.UserActivityMonitor;
 import com.google.gerrit.common.changes.ListChangesOption;
 import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.Change.Status;
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.reviewdb.client.Project;
-import com.google.gerrit.reviewdb.client.Change.Status;
 import com.google.gerrit.reviewdb.client.Project.SubmitType;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JsArray;
@@ -57,8 +57,6 @@
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.KeyPressEvent;
-import com.google.gwt.event.logical.shared.CloseEvent;
-import com.google.gwt.event.logical.shared.CloseHandler;
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.resources.client.CssResource;
@@ -71,7 +69,6 @@
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.HTMLPanel;
-import com.google.gwt.user.client.ui.PopupPanel;
 import com.google.gwt.user.client.ui.ToggleButton;
 import com.google.gwtexpui.clippy.client.CopyableLabel;
 import com.google.gwtexpui.globalkey.client.GlobalKey;
@@ -203,10 +200,6 @@
 
   @Override
   protected void onUnload() {
-    if (updateAvailable != null) {
-      updateAvailable.hide(true);
-      updateAvailable = null;
-    }
     if (updateCheck != null) {
       updateCheck.cancel();
       updateCheck = null;
@@ -742,18 +735,12 @@
           lastDisplayedUpdate = newTime;
         }
       };
-      updateAvailable.addCloseHandler(new CloseHandler<PopupPanel>() {
-        @Override
-        public void onClose(CloseEvent<PopupPanel> event) {
-          updateAvailable = null;
-        }
-      });
     }
     updateAvailable.set(
         Natives.asList(nm).subList(om.length(), nm.length()),
         newInfo.updated());
-    if (!updateAvailable.isShowing()) {
-      updateAvailable.popup();
+    if (!updateAvailable.isAttached()) {
+      add(updateAvailable);
     }
   }
 
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.java
index 2837b15..1dece8b 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.java
@@ -14,52 +14,34 @@
 
 package com.google.gerrit.client.change;
 
-import com.google.gerrit.client.Gerrit;
 import com.google.gerrit.client.changes.ChangeInfo.MessageInfo;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.logical.shared.ResizeEvent;
-import com.google.gwt.event.logical.shared.ResizeHandler;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.Window.ScrollEvent;
-import com.google.gwt.user.client.Window.ScrollHandler;
 import com.google.gwt.user.client.ui.Anchor;
+import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.HTMLPanel;
-import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.RootPanel;
 
 import java.sql.Timestamp;
 import java.util.HashSet;
 import java.util.List;
 
 /** Displays the "New Message From ..." panel in bottom right on updates. */
-abstract class UpdateAvailableBar extends PopupPanel {
+abstract class UpdateAvailableBar extends Composite {
   interface Binder extends UiBinder<HTMLPanel, UpdateAvailableBar> {}
   private static final Binder uiBinder = GWT.create(Binder.class);
 
-  static interface Style extends CssResource {
-    String popup();
-  }
-
   private Timestamp updated;
-  private HandlerRegistration resizer;
-  private HandlerRegistration scroller;
 
-  @UiField Style style;
   @UiField Element author;
   @UiField Anchor show;
   @UiField Anchor ignore;
 
   UpdateAvailableBar() {
-    super(/* autoHide = */ false, /* modal = */ false);
-    add(uiBinder.createAndBindUi(this));
-    setStyleName(style.popup());
+    initWidget(uiBinder.createAndBindUi(this));
   }
 
   void set(List<MessageInfo> newMessages, Timestamp newTime) {
@@ -76,63 +58,6 @@
     }
     author.setInnerText(r.toString());
     updated = newTime;
-
-    if (isShowing()) {
-      setPopupPosition(
-          Window.getScrollLeft() + Window.getClientWidth() - getOffsetWidth(),
-          Window.getScrollTop() + Window.getClientHeight() - getOffsetHeight());
-    }
-  }
-
-  void popup() {
-    setPopupPositionAndShow(new PositionCallback() {
-      @Override
-      public void setPosition(int w, int h) {
-        w += 7; // Initial information is wrong, adjust with some slop.
-        h += 19;
-        setPopupPosition(
-            Window.getScrollLeft() + Window.getClientWidth() - w,
-            Window.getScrollTop() + Window.getClientHeight() - h);
-      }
-    });
-    if (resizer == null) {
-      resizer = Window.addResizeHandler(new ResizeHandler() {
-        @Override
-        public void onResize(ResizeEvent event) {
-          setPopupPosition(
-              Window.getScrollLeft() + event.getWidth() - getOffsetWidth(),
-              Window.getScrollTop() + event.getHeight() - getOffsetHeight());
-        }
-      });
-    }
-    if (scroller == null) {
-      scroller = Window.addWindowScrollHandler(new ScrollHandler() {
-        @Override
-        public void onWindowScroll(ScrollEvent event) {
-          RootPanel b = Gerrit.getBottomMenu();
-          int br = b.getAbsoluteLeft() + b.getOffsetWidth();
-          int bp = b.getAbsoluteTop() + b.getOffsetHeight();
-          int wr = event.getScrollLeft() + Window.getClientWidth();
-          int wp = event.getScrollTop() + Window.getClientHeight();
-          setPopupPosition(
-              Math.min(br, wr) - getOffsetWidth(),
-              Math.min(bp, wp) - getOffsetHeight());
-        }
-      });
-    }
-  }
-
-  @Override
-  public void hide() {
-    if (resizer != null) {
-      resizer.removeHandler();
-      resizer = null;
-    }
-    if (scroller != null) {
-      scroller.removeHandler();
-      scroller = null;
-    }
-    super.hide();
   }
 
   @UiHandler("show")
@@ -143,7 +68,7 @@
   @UiHandler("ignore")
   void onIgnore(ClickEvent e) {
     onIgnore(updated);
-    hide();
+    removeFromParent();
   }
 
   abstract void onShow();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
index a6cd124..1c46b8c 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/UpdateAvailableBar.ui.xml
@@ -18,8 +18,12 @@
     xmlns:ui='urn:ui:com.google.gwt.uibinder'
     xmlns:c='urn:import:com.google.gwtexpui.globalkey.client'
     xmlns:g='urn:import:com.google.gwt.user.client.ui'>
-  <ui:style type='com.google.gerrit.client.change.UpdateAvailableBar.Style'>
+  <ui:style>
     .popup {
+      position: fixed;
+      bottom: 0;
+      right: 0;
+      z-index: 10;
       padding: 5px;
     }
     .bar {
@@ -39,21 +43,23 @@
       margin-left: 0.5em;
     }
   </ui:style>
-  <g:HTMLPanel styleName='{style.bar}'>
-    <ui:msg>Update from <span ui:field='author'/></ui:msg>
-    <g:Anchor ui:field='show'
-        styleName='{style.action}'
-        href='javascript:;'
-        title='Refresh screen and display updates'>
-      <ui:attribute name='title'/>
-      <ui:msg>Show</ui:msg>
-    </g:Anchor>
-    <g:Anchor ui:field='ignore'
-        styleName='{style.action}'
-        href='javascript:;'
-        title='Ignore this update'>
-      <ui:attribute name='title'/>
-      <ui:msg>Ignore</ui:msg>
-    </g:Anchor>
+  <g:HTMLPanel styleName='{style.popup}'>
+    <div class='{style.bar}'>
+      <ui:msg>Update from <span ui:field='author'/></ui:msg>
+      <g:Anchor ui:field='show'
+          styleName='{style.action}'
+          href='javascript:;'
+          title='Refresh screen and display updates'>
+        <ui:attribute name='title'/>
+        <ui:msg>Show</ui:msg>
+      </g:Anchor>
+      <g:Anchor ui:field='ignore'
+          styleName='{style.action}'
+          href='javascript:;'
+          title='Ignore this update'>
+        <ui:attribute name='title'/>
+        <ui:msg>Ignore</ui:msg>
+      </g:Anchor>
+    </div>
   </g:HTMLPanel>
 </ui:UiBinder>
