IIRC, BMenuField, specifically the custom BMenuBar it uses, uses PushState() which would make for three states on the stack during drawing. I don't think it is used anywhere else in the controls drawing code. This problem might be related to DrawStates and my fix for "origin" yesterday. I don't know when I have time to look into this myself, so feel free to do it. BTW, yesterday I tried to separate DrawState::fOrigin from scrolling the bounds rectangle (reenabling and using Layer::fBoundsLeftTop). It didn't work the way I intended so I simply gave up for now.
But sometimes soon, we need to figure out this whole origin + scale versus scrolling offset business. I would like to test some more under R5. For example, does BView::SetOrigin() and SetScale() have any effect on mouse coords? And how exactly is Bounds() affected. I simply never tried that.