                     {
                         target.percentHeight = propertyChanges.start["percentHeight"];
                     }
-                    alphaTo = 0;
                     restoreAlpha = true;
                     origAlpha = propertyChanges.end["alpha"] !== undefined ?
                         propertyChanges.end["alpha"] :
                         target.alpha;
                     if (visibleChange)
                         makeInvisible = true;
+                    if (!playReversed)
+                    {
+                        alphaTo = 0;
+                    }
+                    else
+                    {
+                        if (isNaN(alphaFrom))
+                        {
+                            target.alpha = 0;
+                            alphaFrom = 0;
+                        }
+                        alphaTo = 1;
+                    }
                 }
             }
         }

{
import flash.events.Event;

import mx.effects.effectClasses.PropertyChanges;
import mx.events.FlexEvent;
import mx.managers.LayoutManager;

            {
                var fadeIn:Boolean = (visibleChange && propertyChanges.end["visible"]) ||
                    (parentChange && propertyChanges.end["parent"]);
                if (playReversed)
                    fadeIn = !fadeIn;
                if (fadeIn)
                {
                    if (isNaN(alphaFrom))
                        alphaFrom = !(playReversed) ? 0 : toValue;
                    if (alphaFrom == 0)
                        target.alpha = 0;
                    alphaTo = !playReversed ? toValue : 0;
                    if ("visible" in target)
                        target.visible = true;
                }
