For posterity -- I managed to simplify it a little, and make the rendering more stable.
There are a few safety tips missing from the help patches.
[gemframebuffer] appears to default to the screen size, rather than the window size. Because of that, for a while, I was getting the image that was supposed to be pix_snapped appearing in a reduced size in the lower left of the frame.
[pix_snap] help says the default snapshot size is "window size." It doesn't seem to be the actual rendering window size. I found I could get correct behavior only by explicitly initializing the third inlet.
So the key was:
[t a b a]
where the [t]'s c/ right outlet goes to [pix_snap]'s third inlet; b/ middle outlet bangs a "0 0" list for [pix_snap]'s middle inlet; and a/ left outlet -->
[dimen $1 $2( --> [gemframebuffer]'s inlet.
With that, I get exactly what I was after: the image stays exactly in place, while the [pix_refraction] effect spins around (or could be [pix_lumaoffset] or anything).
Hope the fine print about [gemframebuffer] and [pix_snap] is useful to someone.