             if r_alpha > 0 {
                 let _source = source._color
                 let _destination = self._color
-                let blended = blendMode == .normal ? _source : (1 - d_alpha) * _source + d_alpha * _destination.blended(source: _source, blendMode: blendMode)
+                let blended = (1 - d_alpha) * _source + d_alpha * _destination.blended(source: _source, blendMode: blendMode)
                 return Self(color: compositingMode.mix(s_alpha / r_alpha * blended, s_alpha, d_alpha / r_alpha * _destination, d_alpha), opacity: r_alpha)
             } else {
                 return Self()

        switch (compositingMode, blendMode) {
        case (.clear, _): return Self()
        case (.copy, .normal): return source
        default:
            
            let d_alpha = self.opacity

        switch (compositingMode, blendMode) {
        case (.clear, _): return Self()
        case (.copy, .normal): return source
        case (_, .normal):
            
            let d_alpha = self._opacity
            let s_alpha = source._opacity
            
            let r_alpha = compositingMode.mix(s_alpha, s_alpha, d_alpha, d_alpha)
            
            if r_alpha > 0 {
                let _source = source._color
                let _destination = self._color
                return Self(color: compositingMode.mix(s_alpha / r_alpha * _source, s_alpha, d_alpha / r_alpha * _destination, d_alpha), opacity: r_alpha)
            } else {
                return Self()
            }
            
        default:
            
            let d_alpha = self._opacity
