         if let preservedFont = font {
             self.font = preservedFont
         }
+        
+        // Reapply color if needed
+        if let preservedColor = color {
+            self.textColor = preservedColor
+        }
     }
     
     /// self.setTextWithSpacing with own text
-    public func setSpacing(characterSpacing characterSpacing: CGFloat = 0, lineSpacing: CGFloat = 0, ownAttributes: [String : AnyObject]? = nil, range: NSRange? = nil)
+    public func setSpacing(characterSpacing: CGFloat = 0,
+        lineSpacing: CGFloat = 0,
+        ownAttributes: [String : AnyObject]? = nil,
+        range: NSRange? = nil,
+        preserveFont: Bool = true,
+        preserveColor: Bool = true)
     {
-        self.setTextWithSpacing(self.text, characterSpacing: characterSpacing, lineSpacing: lineSpacing, ownAttributes: ownAttributes, range: range)
+        self.setTextWithSpacing(self.text,
+            characterSpacing: characterSpacing,
+            lineSpacing: lineSpacing,
+            ownAttributes: ownAttributes,
+            range: range,
+            preserveFont: preserveFont,
+            preserveColor: preserveColor)
     }
 }
 

     - parameter lineSpacing:      =0; Amount of line spacing. Ignored if == 0
     - parameter ownAttributes:    =nil; Add your own attributes to the text. Ignored if == nil
     - parameter range:            ={0, text.length}; Range of the string to set attributes to.
     */
    public func setTextWithSpacing(text: String?, characterSpacing: CGFloat = 0, lineSpacing: CGFloat = 0, ownAttributes: [String : AnyObject]? = nil, range: NSRange? = nil, preserveFont: Bool = true)
    {
        var font: UIFont? = nil
        
        // Copy font if needed
        if preserveFont {
            font = self.font
        }
        
        // Assign text

     - parameter ownAttributes:    =nil; Add your own attributes to the text. Ignored if == nil
     - parameter range:            ={0, text.length}; Range of the string to set attributes to.
     */
    public func setTextWithSpacing(text: String?,
        characterSpacing: CGFloat = 0,
        lineSpacing: CGFloat = 0,
        ownAttributes: [String : AnyObject]? = nil,
        range: NSRange? = nil)
    {
        // Assign text
        self.attributedText = _attributedSpacingString(text, characterSpacing: characterSpacing, lineSpacing: lineSpacing, ownAttributes: ownAttributes, range: range)
    }
    
    /// self.setTextWithSpacing with own text
    public func setSpacing(characterSpacing characterSpacing: CGFloat = 0,
        lineSpacing: CGFloat = 0,
        ownAttributes: [String : AnyObject]? = nil,
        range: NSRange? = nil)
    {
        self.setTextWithSpacing(self.text,
            characterSpacing: characterSpacing,
            lineSpacing: lineSpacing,
            ownAttributes: ownAttributes,
            range: range)
    }
}

