     {
         _visible = value;
         
-        if (layer && !layer.computedVisibility)
+        if (designLayer && !designLayer.effectiveVisibility)
             value = false; 
         
         if (super.visible == value)

     *  @private
     *  Storage for the layer property.
     */
    private var _layer:DesignLayer;
    
    [Inspectable (environment='none')]
    
    /**
     *  @copy mx.core.IVisualElement#layer
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    public function get layer():DesignLayer
    {
        return _layer;
    }
    
    /**
     *  @private
     */
    public function set layer(value:DesignLayer):void
    {
        if (_layer)
            _layer.removeEventListener("layerPropertyChange", layer_PropertyChange, false);
        
        _layer = value;
        
        if (_layer)
        {
            _layer.addEventListener("layerPropertyChange", layer_PropertyChange, false, 0, true);
            super.alpha = _alpha * _layer.computedAlpha;
            super.visible = _visible && _layer.computedVisibility;
        }
    }
        

    {
        switch (event.property)
        {
            case "effectiveVisibility":
            {
                var newValue:Boolean = (event.newValue && _visible);            
                if (newValue != super.visible)
                    super.visible = newValue;
                break;
            }
            case "effectiveAlpha":
            {
                var newAlpha:Number = Number(event.newValue) * _alpha;
                if (newAlpha != super.alpha)
