     
     private func linkRangeAtPoint(point: CGPoint) -> LinkRange? {
         if let linkRanges = linkRanges {
-            synchronizeTextStack()
+            textContainer.size = CGSize(width: CGRectGetWidth(bounds), height: CGFloat.max)
             layoutManager.ensureLayoutForTextContainer(textContainer)
             
             let glyphIndex = layoutManager.glyphIndexForPoint(point, inTextContainer: textContainer)

    }
    
    // MARK: Attributes
    
    private func synchronizeTextStack() {
        textStorage.setAttributedString(attributedText)
        textContainer.size = CGSize(width: CGRectGetWidth(bounds), height: CGFloat.max)
    }
    
    private func cacheLinkRanges() {
        synchronizeTextStack()
        
        var ranges = [LinkRange]()
        textStorage.enumerateAttribute(NSLinkAttributeName, inRange: NSRange(location: 0, length: textStorage.length), options: nil) { (value, range, _) in
            // Because NSLinkAttributeName supports both NSURL and NSString
            // values. *sigh*

@IBDesignable public class INDLinkLabel: UILabel {
    
    override public var attributedText: NSAttributedString! {
        didSet { processLinks() }
    }
    
    override public var lineBreakMode: NSLineBreakMode {
