recalculate dpi on different platform

The scale ``factor`` will always be 1 if the output scale does not change. So I default set ``factor`` to 1. If the event happens, the listener will get the latest scale and recalculate dpi.
And why is that correct? Most screens today (especially tablets/mobile but also more and more laptop screens) actually have a scale bigger than 1.