             
         case .fallbackToDefault(let defaultImage, let error):
             onDecodingFrameError(.init(error: error, canFallbackToDefaultImage: true))
-            _imageView.image = defaultImage
+            layer.contents = defaultImage?.cgImage
             stopAnimating()
             onFallBackToDefaultImage()
         case .defaultDecodingError(let error, let defaultImageError):
             onDecodingFrameError(.init(error: error, canFallbackToDefaultImage: false))
-            _imageView.image = nil
+            layer.contents = nil
             stopAnimating()
             onFallBackToDefaultImageFailed(defaultImageError)
         }

                assertionFailure("Error happened while reseting the image. Error: \(error)")
            }
            
            displayingFrameIndex = 0
            playedCount = 0
            _imageView.stopAnimating()
            stopAnimating()
            
            _image?.owner = nil
            nextImage.owner = self
            _image = nextImage
            
            let renderResult = renderCurrentDecoderOutput()
            switch renderResult {
            case .rendered(let initialImage):
                _imageView.image = initialImage
            case .fallbackToDefault(let defaultImage, let error):
                onDecodingFrameError(.init(error: error, canFallbackToDefaultImage: true))
                _imageView.image = defaultImage
                stopAnimating()
                onFallBackToDefaultImage()
            case .defaultDecodingError(let error, let defaultImageError):
                onDecodingFrameError(.init(error: error, canFallbackToDefaultImage: false))
                _imageView.image = nil
                stopAnimating()
                onFallBackToDefaultImageFailed(defaultImageError)
            }

    
    required public init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    /// The natural size for the receiving view, considering only properties of the view itself.
