Okay, I sort of fixed it.
everything is in src/watchesdlg.cpp
ValueTooltip::Fit now looks like this:
void ValueTooltip::Fit()
{
    ::SetMinSize(m_grid);
    m_sizer->Fit(m_panel);
    wxPoint pos = GetScreenPosition();
    //wxSize size = m_panel->GetScreenRect().GetSize();
    wxSize size = m_grid->GetScreenRect().GetSize();
    //SetSize(pos.x, pos.y, size.x, size.y);
    int max_y = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y, m_grid->GetParent() );
    int y = pos.y;
    if (y + size.y > max_y) {
        y = max_y - size.y;
    }
    //SetSize(pos.x, 0, size.x, size.y);
    //SetSize(pos.x, 0, size.x, max_y);
    SetSize(pos.x, y, size.x, size.y);
}
In ValueTooltip::OnTimer, added Fit(); at the very end.
In SetMinSize, replaced this:
    int minWidth = (wxSystemSettings::GetMetric(wxSYS_SCREEN_X, grid->GetParent())*3)/2;
    int minHeight = (wxSystemSettings::GetMetric(wxSYS_SCREEN_Y, grid->GetParent())*3)/2;
with this:
    int minWidth = wxSystemSettings::GetMetric(wxSYS_SCREEN_X, grid->GetParent()); //changed
    int minHeight = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y, grid->GetParent());
It now uses all of the screen. It probably goes under menu bar, but it's hidden for me anyway.