I'd say this is a blob invalidation problem. WebRender caches the rendering of the button. Then the button moves, and ends up at a different fractional x coordinate. This affects snapping of the button drawing. However, WebRender does not invalidate the button and keeps the wrongly-snapped cached rendering. Note that I cannot reproduce this at 100% zoom on a HiDPI display. I had to zoom out to 50% (simulating 1x rendering) before I could reproduce the bug.
Bug 1693675 Comment 4 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
I'd say this is a fallback invalidation problem. WebRender caches the rendering of the button. Then the button moves, and ends up at a different fractional x coordinate. This affects snapping of the button drawing. However, WebRender does not invalidate the button and keeps the wrongly-snapped cached rendering. Note that I cannot reproduce this at 100% zoom on a HiDPI display. I had to zoom out to 50% (simulating 1x rendering) before I could reproduce the bug. *Edit: replaced "blob invalidation" with "fallback invalidation", which is more accurate. Theme rendering doesn't go through the SVG blob invalidation path, it goes through the [`WebRenderCommandBuilder::GenerateFallbackData`](https://searchfox.org/mozilla-central/rev/e84baf5c730abd453be5d50dcb0aba1e743bac47/gfx/layers/wr/WebRenderCommandBuilder.cpp#2135) path.*