Index: Native/Src/Packages/Gui/Studio/Src/BrushAdorner.cpp
===================================================================
--- Native/Src/Packages/Gui/Studio/Src/BrushAdorner.cpp	(revision 16345)
+++ Native/Src/Packages/Gui/Studio/Src/BrushAdorner.cpp	(working copy)
@@ -19,6 +19,7 @@
 #include "XamlDocumentAdornerManager.h"
 #include "ZoomBorder.h"
 #include "StyleScope.h"
+#include "LinkedCommand.h"
 
 #include <NsGui/DrawingContext.h>
 #include <NsGui/Pen.h>
@@ -720,6 +721,7 @@
         Ptr<RadialGradientBrush> bClone = DynamicPtrCast<RadialGradientBrush>(
             Helper::Clone(b, nullptr, false, mDocument->GetResourceMapper()));
 
+        PropertyUpdateRequest transformPropUpdate;
         Vector<PropertyUpdateRequest> propUpdates;
 
         Property* prop;
@@ -757,7 +759,7 @@
                     }
                     else
                     {
-                        propUpdates.EmplaceBack(NSS(Brush),
+                        transformPropUpdate = PropertyUpdateRequest(NSS(Brush),
                             NSS(Transform), false, prop->GetOwnerNode()->GetByteIndex());
                     }
                 }
@@ -776,7 +778,7 @@
                     }
                     else
                     {
-                        propUpdates.EmplaceBack(NSS(Brush),
+                        transformPropUpdate = PropertyUpdateRequest(NSS(Brush),
                             NSS(RelativeTransform), false, prop->GetOwnerNode()->GetByteIndex(),
                             group);
                     }
@@ -794,7 +796,7 @@
                     }
                     else
                     {
-                        propUpdates.EmplaceBack(NSS(Brush),
+                        transformPropUpdate = PropertyUpdateRequest(NSS(Brush),
                             NSS(RelativeTransform), false, prop->GetOwnerNode()->GetByteIndex());
                     }
                 }
@@ -813,12 +815,17 @@
                     }
                     else
                     {
-                        propUpdates.EmplaceBack(NSS(Brush),
+                        transformPropUpdate = PropertyUpdateRequest(NSS(Brush),
                             NSS(Transform), false, prop->GetOwnerNode()->GetByteIndex(),
                             group);
                     }
                 }
             }
+            if (!mProperty->GetScopeDocument()->IsRecordingAnimation())
+            {
+                propUpdates.EmplaceBack(transformPropUpdate);
+                transformPropUpdate = PropertyUpdateRequest();
+            }
         }
 
         if (CHECK_UPDATE(BrushUpdate_RadialOrigin))
@@ -1027,7 +1034,7 @@
         {
             mProperty->GetSetValueCommand()->Execute(bClone);
         }
-        else if (!propUpdates.Empty())
+        else if (!propUpdates.Empty() || !transformPropUpdate.prop.IsNull())
         {
             XamlDocument* runtimeDoc = mProperty->GetRuntimeDocument();
             XamlDocument* scopeDoc = mProperty->GetScopeDocument();
@@ -1077,11 +1084,33 @@
                     mProperty->ResetValue();
                 }
             }
+
+            Ptr<XamlUndoRedoCommand> updateTransformCmd;
+            if (!transformPropUpdate.prop.IsNull())
+            {
+                updateTransformCmd = Helper::CreateUpdatePropertyCommand(
+                    runtimeDoc, scopeDoc, transformPropUpdate, false, false, false);
+                updateTransformCmd->Execute();
+                if (propUpdates.Empty())
+                {
+                    updateTransformCmd->Commit();
+                    return;
+                }
+            }
             
             Ptr<XamlUndoRedoCommand> cmd = Helper::CreateUpdatePropertyCommand(runtimeDoc, scopeDoc,
                 propUpdates);
             cmd->Execute();
-            cmd->Commit();
+
+            if (updateTransformCmd != nullptr)
+            {
+                Ptr<LinkedCommand> linkedCommand = *new LinkedCommand(updateTransformCmd, cmd);
+                linkedCommand->Commit();
+            }
+            else
+            {
+                cmd->Commit();
+            }
         }
     }
     else if (mProperty->GetIsLinearGradientBrush())
