Solve it properly. That means passing calibration data from kernel to userland.
As written before, the really proper solution would be to provide floating or fixed point subpixel input events. Not arbitrarily scaling up in kernel and leaving downscaling to user space (where everybody can make it worse).
That has no advantages, and floating point in kernel is hard. Also you'd either have to invent new interface, or you'd break touchscreen for people that already have their touchscreens calibrated. Just pass calibration data to userland.
But I don't think it is worth implementing subpixel touch events for real world devices due to the jitter I mentioned.
Yes, that's not really proper solution, that just overengineered. Not worth implementing. Pass calibration data to userland.
Pavel