Okay, so not “apropos of nothing” does this happen.
My widget is 256x256. I can get it to move to the right position by taking the viewport size, ADDING 256, and dividing that by the viewport size.
Which means that when UMG places a canvas, it places it along an axis which is defined as “viewport size + widget size”. So a 256 px wide widget on a 1920 px wide viewport will be placed at the right edge when placed at 2176, and the left edge at 0.
I can work around this with some simple math but I can’t imagine that this behavior is INTENTIONAL