|  | @@ -136,14 +136,6 @@ int RenderHandler::getScalingFactor() const
 | 
	
		
			
				|  |  |  	return GH.screenHandler().getScalingFactor();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -std::shared_ptr<IImage> RenderHandler::createImageReference(const ImageLocator & locator, std::shared_ptr<ISharedImage> input, EImageBlitMode mode)
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | -	if (getScalingFactor() == 1 || locator.scalingFactor != 1 || locator.empty())
 | 
	
		
			
				|  |  | -		return input->createImageReference(mode);
 | 
	
		
			
				|  |  | -	else
 | 
	
		
			
				|  |  | -		return std::make_shared<ImageScaled>(locator, input, mode);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  ImageLocator RenderHandler::getLocatorForAnimationFrame(const AnimationPath & path, int frame, int group)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	const auto & layout = getAnimationLayout(path);
 | 
	
	
		
			
				|  | @@ -248,23 +240,46 @@ std::shared_ptr<ISharedImage> RenderHandler::scaleImage(const ImageLocator & loc
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<IImage> RenderHandler::loadImage(const ImageLocator & locator, EImageBlitMode mode)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -	return createImageReference(locator, loadImageImpl(locator), mode);
 | 
	
		
			
				|  |  | +	if (locator.scalingFactor == 0 && getScalingFactor() != 1 )
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		auto unscaledLocator = locator;
 | 
	
		
			
				|  |  | +		auto scaledLocator = locator;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		unscaledLocator.scalingFactor = 1;
 | 
	
		
			
				|  |  | +		scaledLocator.scalingFactor = getScalingFactor();
 | 
	
		
			
				|  |  | +		auto unscaledImage = loadImageImpl(unscaledLocator);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return std::make_shared<ImageScaled>(scaledLocator, unscaledImage, mode);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if (locator.scalingFactor == 0)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		auto scaledLocator = locator;
 | 
	
		
			
				|  |  | +		scaledLocator.scalingFactor = getScalingFactor();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		return loadImageImpl(scaledLocator)->createImageReference(mode);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return loadImageImpl(locator)->createImageReference(mode);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<IImage> RenderHandler::loadImage(const AnimationPath & path, int frame, int group, EImageBlitMode mode)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -	auto locator = getLocatorForAnimationFrame(path, frame, group);
 | 
	
		
			
				|  |  | +	ImageLocator locator = getLocatorForAnimationFrame(path, frame, group);
 | 
	
		
			
				|  |  |  	return loadImage(locator, mode);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<IImage> RenderHandler::loadImage(const ImagePath & path, EImageBlitMode mode)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -	return loadImage(ImageLocator(path), mode);
 | 
	
		
			
				|  |  | +	ImageLocator locator(path);
 | 
	
		
			
				|  |  | +	return loadImage(locator, mode);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<IImage> RenderHandler::createImage(SDL_Surface * source)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -	return createImageReference(ImageLocator(), std::make_shared<SDLImageShared>(source), EImageBlitMode::ALPHA);
 | 
	
		
			
				|  |  | +	return std::make_shared<SDLImageShared>(source)->createImageReference(EImageBlitMode::ALPHA);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<CAnimation> RenderHandler::loadAnimation(const AnimationPath & path, EImageBlitMode mode)
 |