     {
         if (invalidateStyleFlag)
         {
-            // compute mirror
-            const oldMirror: Boolean = mirror;
-            if (parent is IVisualElement)
-                mirror = IVisualElement(parent).layoutDirection == LayoutDirection.RTL;
-            if (mirror || oldMirror)
-                validateTransformMatrix();
-
             var align:String = getStyle("textAlign");
             if (align == "start")
                 align = TextFormatAlign.LEFT;
             if (align == "end")
                 align = TextFormatAlign.RIGHT;
-            // textalign must be mirrored as well
-            if (mirror){
-                if (align == TextFormatAlign.LEFT)
-                   align =TextFormatAlign.RIGHT;
-                else if (align == TextFormatAlign.RIGHT )
-                  align = TextFormatAlign.LEFT;
-            }
             textFormat.align = align;
             textFormat.font = getStyle("fontFamily");
             textFormat.bold = getStyle("fontWeight") == "bold";

            invalidateTightTextHeight = true;
            invalidateTextSizeFlag = true;
        }
        validateTransformMatrix();
    }

    /**
     *  @private
     *  True if we've inherited layoutDirection="rtl".
     *  (implementation largely inspired from UITextField)
     */
    private var mirror: Boolean = false;

    //----------------------------------
    //  x
    //----------------------------------

    private var _x: Number = 0;

    /**
     *  @private
     */
    override public function set x(value: Number): void
    {
        _x = value;
        super.x = value;
        validateTransformMatrix();
    }

    /**
     *  @private
     */
    override public function get x(): Number
    {
           return (mirror) ? _x : super.x;
    }

    /**
     *  @private
     *  Update the transform.matrix based on the mirror flag.  This method must be
     *  called when x, width, or layoutDirection changes.
     */
    private function validateTransformMatrix(): void
    {
        if (mirror) {
            var mirrorMatrix: Matrix = this.transform.matrix;
            // matrix a must be negative
            if (mirrorMatrix.a > 0){
                mirrorMatrix.a = -mirrorMatrix.a;
            }
            mirrorMatrix.tx = _x + width;
            transform.matrix = mirrorMatrix;
        }
        else // layoutDirection changed, mirror=false, reset transform.matrix to its default
        {
            var defaultMatrix: Matrix = this.transform.matrix;
            if (defaultMatrix.a < 0) {
                defaultMatrix.a = -defaultMatrix.a;
            }
            defaultMatrix.tx = _x;
            defaultMatrix.ty = y;
            transform.matrix = defaultMatrix;
        }
    }
    
    /**

            invalidateTightTextHeight = true;
        }
    }
    
    /**
     *  @copy mx.core.UIComponent#getStyle()
     *
