Make pointer warping required behavior
This way, clients can implement tons of forms of wrapping and any other funky behavior on their own surfaces without worrying about UB.
I will also note that this protocol has tons of uses of the word "may", and I'm not sure I like it.... is there anything else worth changing about this protocol?