Had my first semi-failure with WinPosSaver, BUT I could see exactly why it went wrong. The monitors took a LOOOONG time to wake up, and even my "backup" window position loader that triggers after 2 seconds was too soon, and the OS did it's scrambling after..
So the solution is probably to tweak the code so that it runs not just a single "backup" restore of positions, but maybe a series of them (100ms, 1s, 2s,3s,4s)... There isn't much harm in restoring windows positions several seconds after wake up.. Though it might be nice if we could reliably find a way to detect when the human was actually starting to work at the pc or when windows had scrambled stuff and only do it then, just in the off chance that a human tries to move windows around in the few seconds after the monitors wake up and you didn't want to undo that.