             }
             else
             {
-                alphaFrom = 0;
-                alphaTo = origAlpha;
+                alphaFrom = startAlpha;
+                alphaTo = endAlpha;
             }
         }
         else if (isNaN(alphaFrom))
         {
+            // FIXME chaase: why anything but origAlpha here?
             alphaFrom = (alphaTo == 0) ? origAlpha : 0;
         }
         else if (isNaN(alphaTo))

     */
    override public function play():void
    {
        // Remember the original value of the target object's alpha
        origAlpha = target.alpha;
        var propChanges:PropertyChanges = propertyChanges;
        
        // If nobody assigned a value, make this a "show" effect.
        if (isNaN(alphaFrom) && isNaN(alphaTo))
        {   
            if (propChanges && propChanges.end["alpha"] !== undefined &&
                propChanges.end["alpha"] != propChanges.start["alpha"])
            {
                alphaFrom = origAlpha;
                alphaTo = propChanges.end["alpha"];
            }
            else if (propChanges && propChanges.end["visible"] !== undefined &&
                propChanges.end["visible"] != propChanges.start["visible"])
            {
                alphaFrom = propChanges.start["visible"] ? origAlpha : 0;
                alphaTo = propChanges.end["visible"] ? origAlpha : 0;
                // Force target to be visible at effect start
                restoreAlpha = true;
            }
            else if (propChanges && propChanges.end["parent"] !== undefined &&
                propChanges.end["parent"] != propChanges.start["parent"])
            {
                alphaFrom = propChanges.start["parent"] ? origAlpha : 0;
                alphaTo = propChanges.end["parent"] ? origAlpha : 0;
                restoreAlpha = true;
                if (alphaFrom == 0)
                {
                    target.alpha = 0;

            }
            else
            {
                // FIXME chaase: why anything but origAlpha here?
                alphaTo = (alphaFrom == 0) ? origAlpha : 0; 
            }
        }
