Okay. I've discovered something about it: The GetStgFrameWidth() returns a 40, like it's supposed to (According to how it's set up), but it looks like the distance the shot reflects is 40 from the frame border instead of the window, which puts it at 80 from the window - double what it's supposed to be. Similarly, reflection off the top is actually offset the same way: double the distance from the top of the window than it should be.
I have a feeling that means I'm not supposed to be using GetStgFrame(Left/Top/Width/Height) when determining where objects inside (as opposed to on top of) are suppose to be (such as where a shot goes to).
However, it doesn't explain why GetStgFrameWidth gives me 480 when it's set to 520 (aside from the fact that the dissonance is exactly the width of the window's left to the frame's left)
EDIT: Well, that's pretty inconsistent. I'm supposed to be using 0 as opposed to GetStgFrame(Left/Top) for objects in the frame, but using GetStgFrame(Width/Height) gives me the right relative number (the intersection was because of the length of the shot VS the actual position of the shot). Something new everyday :/