We're running into a situation where, if "Viewport:Change" events are going through and setting the displayport/resolution/metrics between "before-first-paint" and actual first paint, we are clobbering the proper new metrics. This only happens while panning or zooming around the page, since that's the only time "Viewport:Change" events go through. To help visualize this: load a page -> wait for it to paint -> load a new page (click on a link, open from url bar, whatever) -> pan around while waiting for the new page to load -> observe random crap on the new page I think the ideal solution is to not accept new FrameMetrics after we get a "before-first-paint", until the mScrollId field changes. However, this is more difficult than it sounds, because mScrollId doesn't change if it's a root layer, even if it's a new frame. This is similar to bug 735029, but I'm not going to mark them as interdependent.
Old B2G bug, no longer relevant.