         }
         
         // Recache resolved color
-        _resolvedThemeColor = ThemeColor.color(for: ThemeKit.shared.effectiveTheme, selector: themeColorSelector)
+        let newColor = ThemeColor.color(for: ThemeKit.shared.effectiveTheme, selector: themeColorSelector)
+        if themeColorSpace == nil {
+            resolvedThemeColor = newColor
+        }
+        else {
+            let convertedColor = newColor.usingColorSpace(themeColorSpace!)
+            resolvedThemeColor = convertedColor ?? newColor
+        }
     }
     
     
     // MARK:- NSColor Overrides
     
     override public func setFill() {
-        resolvedThemeColor?.setFill()
+        resolvedThemeColor.setFill()
     }
     
     override public func setStroke() {
-        resolvedThemeColor?.setStroke()
+        resolvedThemeColor.setStroke()
     }
     
     override public func set() {
-        resolvedThemeColor?.set()
+        resolvedThemeColor.set()
     }
     
     override public func usingColorSpace(_ space: NSColorSpace) -> NSColor? {

    
    init(with selector: Selector, colorSpace: NSColorSpace!) {
        themeColorSelector = selector
        _colorSpace = colorSpace
        super.init()
        recacheColor()
        NotificationCenter.default.addObserver(self, selector: #selector(recacheColor), name: .didChangeTheme, object: nil)

    
    // MARK:- Private Implementation
    
    open override class func initialize() {
        _cachedColors = NSCache.init()
        _cachedThemeColors = NSCache.init()
