         
         switch backgroundConfiguration.backgroundContentMode {
         case .Original:
-            imageConfiguration = backgroundImage.centeredConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
+            imageConfiguration = backgroundImage.originalConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
         case .Tile:
-            imageConfiguration = backgroundImage.tiledConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
+            imageConfiguration = backgroundImage.tileConfiguration(forFrame: frame, scale: backgroundConfiguration.backgroundScale)
         case .Stretch:
-            imageConfiguration = backgroundImage.constrainedConfiguration(forFrame: frame)
+            imageConfiguration = backgroundImage.stretchConfiguration(forFrame: frame)
+        case .Fill:
+            imageConfiguration = backgroundImage.fillConfiguration(forFrame: frame)
+        case .Fit:
+            imageConfiguration = backgroundImage.fitConfiguration(forFrame: frame)
         default:
             break
         }


fileprivate extension Image {
    
    func constrainedConfiguration(forFrame frame: CGRect) -> ImageConfiguration {
        guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
            return (url, 1)
        }

        return croppedConfiguration(forRect: rect, scale: scale)
    }

    func tileConfiguration(forFrame frame: CGRect, scale: CGFloat) -> ImageConfiguration {
        let width = min(frame.width * scale, size.width)
        let height = min(frame.height * scale, size.height)
        let rect = CGRect(x: 0, y: 0, width: width, height: height)
