(In reply to comment #5) > Weird. I hope Zack can track this down ... gDumpPaintList=1 would be a good > start The display lists don't seem to provide any clues. When the phantom scrollbar is drawn there are a few extra entries for the scrollbar and scrollbarbutton etc, but that is the only difference. Here is the relevant display list output from a plain trunk build (where the bug occurs). Painting --- before optimization (dirty 0,0,61440,34800): SolidColor 0xb0e925b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xb0e92690(Canvas(html)(-1)) (0,0,61440,34800) uniform Clip (nil)() (0,0,61440,34800) Background 0xb0eb7d10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Background 0xb0eb7dfc(ScrollbarFrame(scrollbar)(-1)) (480,6480,6000,120) Border 0xb0eb7dfc(ScrollbarFrame(scrollbar)(-1)) (480,6480,6000,120) Background 0xb0ebb040(ButtonBoxFrame(scrollbarbutton)(-1)) (540,6540,840,840) Background 0xb0ebb1fc(ButtonBoxFrame(scrollbarbutton)(-1)) (5580,6540,840,840) Clip (nil)() (480,480,6000,6000) Text 0xb0ebba0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xb0ebba0c(Text(0)) (480,480,540,1140) Painting --- after optimization: SolidColor 0xb0e925b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xb0e92690(Canvas(html)(-1)) (0,0,61440,34800) uniform Background 0xb0eb7dfc(ScrollbarFrame(scrollbar)(-1)) (480,6480,6000,120) Border 0xb0eb7dfc(ScrollbarFrame(scrollbar)(-1)) (480,6480,6000,120) Background 0xb0ebb040(ButtonBoxFrame(scrollbarbutton)(-1)) (540,6540,840,840) Background 0xb0ebb1fc(ButtonBoxFrame(scrollbarbutton)(-1)) (5580,6540,840,840) Painting --- before optimization (dirty 480,480,6000,6000): SolidColor 0xb0e925b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xb0e92690(Canvas(html)(-1)) (0,0,61440,34800) uniform Clip (nil)() (0,0,61440,34800) Background 0xb0eb7d10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Clip (nil)() (480,480,6000,6000) Text 0xb0ebba0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xb0ebba0c(Text(0)) (480,480,540,1140) Painting --- after optimization: Clip (nil)() (0,0,61440,34800) Background 0xb0eb7d10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Clip (nil)() (480,480,6000,6000) Text 0xb0ebba0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xb0ebba0c(Text(0)) (480,480,540,1140) And here is the display list from a build with the change in bug 485030 reverted (the bug does not occur). Painting --- before optimization (dirty 0,0,61440,34800): SolidColor 0xaff995b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xaff99690(Canvas(html)(-1)) (0,0,61440,34800) uniform Clip (nil)() (0,0,61440,34800) Background 0xaffcbd10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Clip (nil)() (480,480,6000,6000) Text 0xaffd3a0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xaffd3a0c(Text(0)) (480,480,540,1140) Painting --- after optimization: SolidColor 0xaff995b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xaff99690(Canvas(html)(-1)) (0,0,61440,34800) uniform Painting --- before optimization (dirty 480,480,6000,6000): SolidColor 0xaff995b0(Viewport(-1)) (0,0,61440,34800) Clip (nil)() (0,0,61440,34800) CanvasBackground 0xaff99690(Canvas(html)(-1)) (0,0,61440,34800) uniform Clip (nil)() (0,0,61440,34800) Background 0xaffcbd10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Clip (nil)() (480,480,6000,6000) Text 0xaffd3a0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xaffd3a0c(Text(0)) (480,480,540,1140) Painting --- after optimization: Clip (nil)() (0,0,61440,34800) Background 0xaffcbd10(HTMLScroll(div)(1)) (480,480,6000,6000) opaque uniform Clip (nil)() (480,480,6000,6000) Text 0xaffd3a0c(Text(0)) (480,480,540,1140) nsDisplayReflowCount 0xaffd3a0c(Text(0)) (480,480,540,1140) I'm continuing to look into this...