anchor.diff:    HtmlViewer := PaintPanel.ParentViewer;
     FViewer := HtmlViewer.CreateIFrameControl;
     FViewer.Parent := PaintPanel;
  -  if Assigned(HtmlViewer.OnExpandName) then
  -    HtmlViewer.OnExpandName(HtmlViewer, FSource, FUrl)
  -  else
  -    FUrl := HtmlViewer.HtmlExpandFilename(FSource);
  +  if FSource <> '' then
  +  begin
  +    if Assigned(HtmlViewer.OnExpandName) then
  +      HtmlViewer.OnExpandName(HtmlViewer, FSource, FUrl)
  +    else
  +      FUrl := HtmlViewer.HtmlExpandFilename(FSource);
  +  end;
   end;
   
   //-- BG ---------------------------------------------------------- 12.11.2011 --
  
positive.code:             break;
          Dec(I);
        end;
        Tag := OwnerCell.OwnersTag;
        if I < 0 then
        begin {no previous non absolute block, remove any Auto paragraph space}
          if TopAuto then
          begin
            if (Tag = 'li') then
            begin
              MargArray[MarginTop] := 0;
            end
            else
              MargArray[MarginTop] := 0;
          end
          else if (Tag = 'default') or (Tag = 'body') then
            MargArray[MarginTop] := Max(0, MargArray[MarginTop] - OwnerBlock.MargArray[MarginTop]);
        end
        else
        begin
          TB := OwnerCell[I];
          if ((TB is TTableBlock) or (TB is TTableAndCaptionBlock)) and
            (TBlock(TB).FloatLR in [ALeft, ARight])
            and TopAuto then
            MargArray[MarginTop] := 0
          else if (TB is TBlock) then
          begin
            LastMargin := TBlock(TB).MargArray[MarginBottom];
            TBlock(TB).MargArray[MarginBottom] := 0;
            if LastMargin >= 0 then {figure out how many are negative}
              if MargArray[MarginTop] >= 0 then
                Negs := 0
              else
                Negs := 1
            else if MargArray[MarginTop] >= 0 then
              Negs := 1
            else
              Negs := 2;
            case Negs of
              0: MargArray[MarginTop] := Max(MargArray[MarginTop], LastMargin);
              1: MargArray[MarginTop] := MargArray[MarginTop] + LastMargin;
              2: MargArray[MarginTop] := Min(MargArray[MarginTop], LastMargin);
            end;
          end
          else if (Tag = 'li') and TopAuto
            and ((Pos('ul.', TagClass) = 1) or (Pos('ol.', TagClass) = 1)) then
            MargArray[MarginTop] := 0; {removes space from nested lists}
        end;
      end;
  
negative.code:   else if FloatLR in [ALeft, ARight] then {do nothing}
    else if Display = pdNone then {do nothing}
    else
      //with OwnerCell do
      begin
        I := OwnerCell.Count - 1; {find the preceding block that isn't absolute positioning}
        while I >= 0 do
  