anchor.diff:    for i := 0 to mask_h - 1 do
     begin
       line := Mask[i];
  -
  -    for j := 0 to mask_w - 1 do
  +    shift := mask_w - Length(line);
  +    for j := 0 to Length(line) - 1 do
       begin
  +      p := j + shift;
         case line[j+1] of
  -        MASK_ACTIVABLE, MASK_TRIGGER: CurrentContextState.RenderSolidRect(j* TILE_SIZE, i * TILE_SIZE, TILE_SIZE, TILE_SIZE, ACTIVE_COLOR);
  -        MASK_BLOCKED, MASK_HIDDEN: CurrentContextState.RenderSolidRect(j* TILE_SIZE, i * TILE_SIZE, TILE_SIZE, TILE_SIZE, BLOCKED_COLOR);
  +        MASK_ACTIVABLE, MASK_TRIGGER: CurrentContextState.RenderSolidRect(p* TILE_SIZE, i * TILE_SIZE, TILE_SIZE, TILE_SIZE, ACTIVE_COLOR);
  +        MASK_BLOCKED, MASK_HIDDEN: CurrentContextState.RenderSolidRect(p* TILE_SIZE, i * TILE_SIZE, TILE_SIZE, TILE_SIZE, BLOCKED_COLOR);
         end;
       end;
     end;
  
positive.code: 
  procedure TMapObjectTemplate.OnOwnerChanged(ATiles: TTiles; op: TFPObservedOperation);
  var
    i, j, x, y: Integer;
    line: String;
  
    t: PMapTile;
  
negative.code:   c: Char;
  begin
    mask_h := Mask.Count;
    mask_w := 1;
  
    FIsVisitable:=false;
    for s in FMask do
    begin
      if Length(s) > mask_w then
      begin
        mask_w := Length(s)
      end;
      for c in s do
      begin
        if (c = MASK_ACTIVABLE) or (c = MASK_TRIGGER) then
  