There are a number of places between selection painting and the rect returned by FrameSelection::selectionBounds where rounding is applied inconsistently, resulting in a rect that doesn't precisely match the painted pixels. For example, RenderView::subtreeSelectionBounds does a 'enclosingBoundingBox', and InlineTextBox::localSelectionRect does a 'enclosingIntRect' instead of 'snapRectToDevicePixelsWithWritingDirection' (which is what happens in the painting code). This means that FrameSnapshotting::snapshotSelection often returns a snapshot that doesn't precisely match the blue highlight. This also breaks TextIndicator's BounceAndCrossfade animation, which depends on that being true.
<rdar://problem/19041871>