         
         guard showErrorLabel else { return CGRect(x: x, y: 0, width: rect.width - paddingX, height: rect.height) }
         
-        let topInset = (rect.size.height - lblError.bounds.size.height - paddingYErrorLabel - ceil(font!.lineHeight)) / 2.0
-        let textY = ((rect.height - ceil(font!.lineHeight)) / 2.0) - topInset
-        
-        return CGRect(x: x, y: -ceil(textY), width: rect.size.width - paddingX, height: rect.size.height)
+        let topInset = (rect.size.height - lblError.bounds.size.height - paddingYErrorLabel - fontHeight) / 2.0
+        let textY = topInset - ((rect.height - fontHeight) / 2.0)
+        
+        return CGRect(x: x, y: floor(textY), width: rect.size.width - paddingX, height: rect.size.height)
     }
     
     fileprivate func insetRectForBounds(rect:CGRect) -> CGRect {

    override public func layoutSubviews() {
        super.layoutSubviews()
        
        dtLayer.frame = CGRect(x: bounds.origin.x,
                               y: bounds.origin.y,
                               width: bounds.width,
                               height: dtLayerHeight)
        
        if showErrorLabel {
            

        return paddingX
    }
    
    fileprivate var fontHeight:CGFloat{
        return ceil(font!.lineHeight)
    }
    
    fileprivate var dtLayerHeight:CGFloat{
        return showErrorLabel ? floor(bounds.height - lblError.bounds.size.height - paddingYErrorLabel) : bounds.height
    }
    
