Problem solved.
When hooking to WH_GETMESSAGE the lParam should be cast to MSG and not CWPSTRUCT (the example I copied the code from was hooking WH_CALLWNDPROC and I changed it later to WH_GETMESSAGE without changing the Proc code).
After replacing CWPSTRUCT with MSG I got all the WM_PAINTs.
I would probably have solved this alot sooner if it wasn't for the spy++ who kept showing lParam NULL:
<00006> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00007> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00008> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00009> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00010> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00011> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]
<00012> 000903E6 P WM_PAINT hdc:00000000 [wParam:00000000 lParam:00000000]