width of overflow:hidden blocks is wrong when their margins overlap floats. There are a couple of cases that we get wrong, but they all basically boil down to the fact that we need to stop thinking about shrinking to avoid floats as reducing the available content width and instead start thinking about it as reducing the object's width instead.