anchor.diff:          else
           if ptHeight in fPasteTypes then
           begin
  -          fLandTemp[Ly,Lx].Height := fSelectionBuffer[I,K].Height;
  -
             if aUpdateMainLand then
  -            gTerrain.MainLand^[Ly,Lx].Height := fSelectionBuffer[I,K].Height;
  +            gTerrain.MainLand^[Ly,Lx].Height := fSelectionBuffer[I,K].Height
  +          else
  +            fLandTemp[Ly,Lx].Height := fSelectionBuffer[I,K].Height;
           end;
         end;
       end;
  +
     if aUpdateAll then
     begin
       updateRect := KMRectGrow(fSelectionRect, 2); // 2 - just in case
  
positive.code: procedure TKMSelection.CopyBufferToTempLand(aUpdateMainLand: Boolean = False; aUpdateAll: Boolean = True);
  var
    I, K: Integer;
    Sx, Sy, Lx, Ly: Word;
    updateRect: TKMRect;
  begin
    Sx := fSelectionRect.Right - fSelectionRect.Left;
  
negative.code: 
  procedure TKMSelection.DuplicateLandToTemp;
  var
    I, K: Integer;
  begin
    // Copy land to temp array
    // todo: optimise copying process
  