Well, what I'd expect is happening, if this only happens when you call a SceneChange, there is something which is causing your windows to either be loaded in the wrong order, or is simply messing up the z-indexes of the windows.
From my rather limited experience with these things, I would suggest the following, none of which I am sure will work.
1) The window object has several methods for setting the z-index of a window (MoveAfter, MoveBefore, MoveToTop, MoveToBottom). If you aren't familiar with z-index, the easiest way to imagine it is papers on a desk.
If there were a stack of papers on a desk, the one at the bottom would have a z-index of 0, and anything above it would have increasing numbers. Lower numbers are under the object, and larger numbers are above the object. So, an object with z-index of 5, for example, would display over anything with a z-index less than 5, but under anything with a z-index greater than 5.
So, you could devise a function/method that checks the NextSibling and PrevSibling properties of a window, and moves them with MoveAfter or MoveBefore to the right spots. Unfortunately, I can't find a function or property that allows you to simply say "Window.z = 4;" for example.
2) If that doesn't sound too great, I'd ask you: are you loading the windows into new variables every time you change a scene? If so, that may be causing the z-indexes to screw up with a scene change (though I'm very unsure about that) because of reinstantiated data. Personally, I keep global variables for the more vital parts of my interface, so that I only have one instance of them floating around...it makes it much easier to maintain the object's properties, such as z-index, I'd imagine.
Though I have no experience with WM's window order, and this is all speculation, I hope you'll find it helpful.