decorations: Provide DPR to shadows
Upscaling a shadow is problematic, even though it's not noticable on the gradient, it's important that the edge of the shadow lines up with the edge of the window perfectly. Otherwise we risk the pixel nearest the window not being as dark as it should be.
This also supports floating point logical geometry within shadows, which allow us to closer match the real buffer sizes.