 			NSParagraphStyleAttributeName: paragraphStyle
 		])
 
+		var attributedTextUsesTintColor = false
 		var hasLinks = false
+		let tintColor = self.tintColor
 
 		attributedText.enumerateAttributesInRange(NSRange(forString: finalizedText.string), options: [.LongestEffectiveRangeNotRequired]) { attributes, range, _ in
+			var finalAttributes = attributes
 			if !hasLinks && attributes[NSLinkAttributeName] != nil {
 				hasLinks = true
 			}
 
-			finalizedText.addAttributes(attributes, range: range)
+			if let backgroundColor = attributes[NSBackgroundColorAttributeName] as? UIColor where backgroundColor.tintAlpha != nil {
+				finalAttributes[NSBackgroundColorAttributeName] = backgroundColor.tintedWithColor(tintColor)
+				attributedTextUsesTintColor = true
+			}
+			if let foregroundColor = attributes[NSForegroundColorAttributeName] as? UIColor where foregroundColor.tintAlpha != nil {
+				finalAttributes[NSForegroundColorAttributeName] = foregroundColor.tintedWithColor(tintColor)
+				attributedTextUsesTintColor = true
+			}
+
+			finalizedText.addAttributes(finalAttributes, range: range)
 		}
 
 		textStorage.setAttributedString(finalizedText)
 		linkTapRecognizer.enabled = hasLinks
+
+		self.attributedTextUsesTintColor = attributedTextUsesTintColor
 
 		_finalizedText = finalizedText.copy() as? NSAttributedString
 		_links = nil

	private lazy var delegateProxy: DelegateProxy = DelegateProxy(label: self)
	private lazy var renderingLayer: LabelLayer = self.layer as! LabelLayer

	private let layoutManager = LayoutManager()
	private let linkTapRecognizer = UITapGestureRecognizer()
	private let textContainer = NSTextContainer()

		super.tintColorDidChange()

		updateFinalTextColor()

		if attributedTextUsesTintColor {
			setNeedsUpdateFinalizedText()
		}
	}


