I tested (again, 4.8-) pressing the screenshot (html submit) button in firefox at one minute intervals for five minutes and it still is taking from the previous back buffer (the one that is supposedly "in a garbage state"). For good measure right before I posted this message, after 10 minutes since the SwapBuffers() call and still the same. Then for good measure, I pulled it up in IE (to avoid potential browser cache issues) and get the same result 15 minutes after the last SwapBuffers() call.
From
ifScreen:
"The back buffer should be assumed to be in a garbage state after this call [to SwapBuffers()] is complete."
I know in my code that I don't call SwapBuffers() unless there is user input (or async input, which in this case there is none). Perhaps I see this because it is different than uses of roScreen that use animation.
Hopefully this sufficiently brackets the problem for you...
Also note an unrelated documentation error:
http://sdkdocs.roku.com/display/RokuSDKv48/roScreenIf three parameters are passed, the second two specify the screen's resolution. The dimensions must be one of the screen sizes specified above.
CreateObject("roScreen", true, 720, 480) ' db & SD res
I think should read "If four parameters are passed, the last two specify..."