I use Direct3D in my own projects and it can be frustrating. MP probably has a routine which enumerates the KnownD3DAdapters and this might be zero based. The routine which chooses the monitor maybe 'one' based so the call may add or subtract one to the adapter number thinking it can equate to the monitor number. Depending on where the resize routine gets called, this could get called more than once depending on whether it is fullscreen or not. Sometimes I have to add +2 and other times -1 to the adapter number and still things can go wrong. When only two monitors are involved I get a simple toggle effect between monitors but with three such kluged code can cause a wrap around and end up on monitor three, like what is happening to my MP.