     {
     	var tipAsDisplayObject:DisplayObject = dataTipInstance as DisplayObject;
     	
-    	if (tipAsDisplayObject)
+    	if (tipAsDisplayObject && thumb)
     	{
-			var relX:Number = thumb.x - (tipAsDisplayObject.width - thumbSize) / 2;
+			var relX:Number = thumb.x - (tipAsDisplayObject.width - thumb.width) / 2;
 	        var o:Point = new Point(relX, dataTipOriginalPosition.y);
 	        var r:Point = localToGlobal(o);     
 			

import flash.geom.Rectangle;

import spark.components.supportClasses.Slider;
import mx.core.ILayoutElement;

//--------------------------------------
//  Other metadata

    
    //--------------------------------------------------------------------------
    //
    // Methods
    //
    //--------------------------------------------------------------------------
    
    /**
     *  @private
     */
    override protected function pointToValue(x:Number, y:Number):Number
    {
        if (!thumb || !track)
            return 0;
        
        var range:Number = maximum - minimum;
        var thumbRange:Number = track.getLayoutBoundsWidth() - thumb.getLayoutBoundsWidth();
        return minimum + ((thumbRange != 0) ? (x / thumbRange) * range : 0); 
    }
    
    /**
     *  @private
     */
    override protected function updateSkinDisplayList():void
    {
        if (!thumb || !track)
            return;
        
        var thumbRange:Number = track.getLayoutBoundsWidth() - thumb.getLayoutBoundsWidth();
        var range:Number = maximum - minimum;
        var thumbPos:Number = (range > 0) ? ((pendingValue - minimum) / range) * thumbRange : 0;
        thumb.setLayoutBoundsPosition(Math.round(track.getLayoutBoundsX() + thumbPos), thumb.getLayoutBoundsY());
    }
    
    
    /**
     *  @private
