anchor.diff:    ClipRenderList;
     if fCount > 0 then
     begin
  -    SetLength(renderOrderAux, Length(RenderOrder));
  -    Move(RenderOrder[0], renderOrderAux[0], Length(RenderOrder)*SizeOf(RenderOrder[0]));
  +    SetLength(renderOrderAux, Length(fRenderOrder));
  +    Move(fRenderOrder[0], renderOrderAux[0], Length(fRenderOrder)*SizeOf(fRenderOrder[0]));
       // Quicksort is unstable which causes Z fighting, so we use mergesort
  -    DoMergeSort(0, Length(RenderOrder), False);
  +    DoMergeSort(0, Length(fRenderOrder), False);
       // DoQuickSort(0, Length(RenderOrder) - 1);
     end;
   end;
  
positive.code:   private
      fUnitsRXData: TRXData; //shortcut
      fCount: Word;
      RenderOrder: array of Word; // Order in which sprites will be drawn ()
      RenderList: array of TKMRenderSprite;
  
      fStat_Sprites: Integer; // Total sprites in queue
      fStat_Sprites2: Integer;// Rendered sprites
  
negative.code:   hAdd, imH, hTop: Single;
    snsTop, snsBottom: Integer;
  begin
    if fCount >= Length(fRenderList) then
      SetLength(fRenderList, fCount + 256); // Book some space
  
    fRenderList[fCount].Loc        := KMPointF(pX, pY); // Position of sprite, floating-point
    fRenderList[fCount].Feet       := KMPointF(gX, gY); // Ground position of sprite for Z-sorting
    fRenderList[fCount].RX         := aRX;             // RX library
    fRenderList[fCount].Id         := aId;             // Texture Id
    fRenderList[fCount].UID        := aUID;            // Object Id
    fRenderList[fCount].NewInst    := True;            // Is this a new item (can be occluded), or a child one (always on top of it's parent)
    fRenderList[fCount].TeamColor  := aTeam;           // Team Id (determines color)
    fRenderList[fCount].AlphaStep  := aAlphaStep;      // Alpha step for wip buildings
  
    if aUID > 0 then
      with fRenderList[fCount].SelectionRect do
      begin
        snsTop    := fUnitsRXData.SizeNoShadow[aId].top;
        snsBottom := fUnitsRXData.SizeNoShadow[aId].bottom;
  