     }
     
     override func updateTrackingAreas() {
-        guard self.growsOnHover else { return }
-        if let ta = self.trackingArea { self.removeTrackingArea(ta) }
+        super.updateTrackingAreas()
         
-        self.trackingArea = NSTrackingArea(rect: self.bounds, options: [.activeAlways, .mouseEnteredAndExited, .cursorUpdate], owner: self, userInfo: nil)
-        self.addTrackingArea(self.trackingArea!)
+        self.trackingAreas.forEach(self.removeTrackingArea(_:))
+        let trackingArea = NSTrackingArea(rect: self.bounds, options: [.activeAlways, .mouseEnteredAndExited], owner: self, userInfo: nil)
+        self.addTrackingArea(trackingArea)
     }
     
     override func resetCursorRects() {

    
    // Thanks to Kite Compositor (kiteapp.co)
    override func mouseEntered(with event: NSEvent) {
        guard let layer = self.layer else { return }
        
        let transformScaleAnimation = CASpringAnimation()
        transformScaleAnimation.beginTime = layer.convertTime(CACurrentMediaTime(), from: nil) + 0.000001
        transformScaleAnimation.fillMode = kCAFillModeForwards
        transformScaleAnimation.duration = 0.99321
        transformScaleAnimation.isRemovedOnCompletion = false

class LinkButton: NSButton {
    @IBInspectable var growsOnHover: Bool = true
    @IBInspectable var growFactor: CGFloat = 1.15
    
    override func layout() {
        super.layout()
