``ImageViewer`` displays images as supported by ``QImageReader``, using a QLabel. In the constructor, we increase the allocation limit of ``QImageReader`` to allow for larger photos. In the ``openFile()`` function, we load the image and determine its size. If it is larger than the screen, we downscale it to screen size, maintaining the aspect ratio. This calculation has to be done in native pixels, and the device pixel ratio needs to be set on the resulting pixmap for it to appear crisp.