I usually include screenshots, but it was late and I was tired.
Moving on.
The values returned are not the size of the widget but simply those set by Appearance → Brush → Image Size.
Here is a test setup I just created with UE4.6.1.
It becomes a child of an Overlay widget with its Overlay Slot set to fill both Horizontally & Vertically.
The Image being used is 2048x1024 in size.
Note that I reset Appearance → Brush → Image Size back to default 32x32.
Here is the graph setup to have Tick() & Paint() report desired size.
Here is the result in-game.
The image is clearly not 32x32 pixels in size.
This setup seems correct, hence my confusion about what values GetDesiredSize() is returning.
My current workaround is to use a custom UserWidget that uses the geomtry supplied in Tick() to figure out the size.
It works, but its a bit of a hack
Thoughts?