The float does not push back past its previous sibling which is an inline block. This happens because the height of the inline block contributes towards its y() position. I think the fix is to disregard the height of the containing block when placing floats during line layout.