The reason screentolayer gave inaccurate results was a bug. If the container has a border it throws off the results. See
This thread.
Unfortunately the technique of adding each parent's x value to arrive at a stage offset doesn't work (easily at least) unless each container is left aligned. I really hope Klaus fixes screentolayer soon.