In this paper, we propose a state-of-the-art super-resolution algorithm and a framework to effectively train this architecture to handle real-world images. Recent learning-based, super-resolution methods have achieved impressive performance on ideal datasets. However, their performance plummets when tested on real images, as their assumed degradation model deviates from reality. Instead of assuming simplistic degradations, we make use of generative methods to mimic real degradations in order to narrow the domain gap between training data and testing data. In particular, we employ a novel Normalizing Flow architecture to replicate realistic noise and camera pipeline degradations. This framework, in conjunction with a carefully designed neural network architecture, results in a superresolution algorithm which compares favorably to other methods. As for the model architecture, the combination between its performance on real images and lower computational load makes it attractive for practical super-resolution applications. We compare our method with different state-of-art algorithms, both on synthetic and real images. The experimental results demonstrate the remarkable performance of our super-resolution algorithm in real-world applications.