         
         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 insetRectForEmptyBounds(rect: rect)
            }else{
                let topInset = paddingYFloatLabel + lblFloatPlaceholder.bounds.size.height + (paddingHeight / 2.0)
                let textOriginalY = (rect.height - fontHeight) / 2.0
                var textY = topInset - textOriginalY
                
                if textY < 0 { textY = topInset }
                
                return CGRect(x: x, y: ceil(textY), width: rect.size.width - paddingX, height: rect.height)
            }
        }
    }
