anchor.diff:  procedure TfrmKeymanMenu.PopupEx(mnu: TPopupMenu; X, Y: Integer; IconRect: TRect);   // I3990
   var
     kmi: TKeymanMenuItem;
  -  i, ItemWidth, ItemHeight: Integer;
  +  i, ItemWidth, ItemHeight, TempItemHeight: Integer;
     v: Integer;
   begin
     Fmnu := mnu;
   
  +  MaxScrollPosition := 0;
     MaxKeyboardWidth := 0;
     MaxItemWidth := 0;
     TotalKeyboardHeight := 0;
  
positive.code:           MaxKeyboardWidth := ItemWidth;
  
          Inc(TotalKeyboardHeight, ItemHeight);
          Inc(MaxScrollPosition);
        end
        else
        begin
  
negative.code:       end;
      end;
    end;
  
    //
    // Do we need scrollable keyboard list? Only if it's greater than 75% of screen height
    //
  
    ScrollableView := TotalKeyboardHeight > (Screen.Height * 1 div 5);
    if ScrollableView then
    begin
      TotalKeyboardHeight := Screen.Height * 1 div 5;
  
      // Calculate the maximum scroll
      TempItemHeight := 0;
      for i := Fmnu.Items.Count - 1 downto 0 do
      begin
        if Fmnu.Items[i] is TKeymanMenuItem then
        begin
          kmi := Fmnu.Items[i] as TKeymanMenuItem;
          kmi.OnMeasureItem(kmi, Canvas, ItemWidth, ItemHeight);
          if (kmi.CMIItemType = _mitKeyboardsList) then
          begin
            Inc(TempItemHeight, ItemHeight);
            if TempItemHeight > TotalKeyboardHeight - ScrollBoxHeight*2 then
            begin
              MaxScrollPosition := i + 1;
              Break;
            end;
          end;
        end;
      end;
    end;
  
    if not FIsKeyboardMenu then
  