     public function get layoutMatrix3D():Matrix3D
     {
         if(_layoutFeatures == null) initAdvancedLayoutFeatures();
-        return _layoutFeatures.layoutMatrix3D;          
+		// esg: _layoutFeatures keeps a single internal copy of the layoutMatrix.
+		// since this is an internal class, we don't need to worry about developers
+		// accidentally messing with this matrix, _unless_ we hand it out. Instead,
+		// we hand out a clone.
+        return _layoutFeatures.layoutMatrix3D.clone();          
     }
 
 

    {
        if (_layoutFeatures == null)
            initAdvancedLayoutFeatures();
        _layoutFeatures.layoutMatrix3D = value;
        invalidateTransform(false /*triggerPropertyInvalidation*/);
    }

    public function set layoutMatrix3D(value:Matrix3D):void
    {
        if(_layoutFeatures == null) initAdvancedLayoutFeatures();
        
        // layout features will internally make a copy of this matrix rather than
        // holding onto a reference to it.
        _layoutFeatures.layoutMatrix3D = value;
        invalidateTransform();
        invalidateParentSizeAndDisplayList();
