WTLとBoehm GCの組み合わせで……

gc_cleanup を継承したクラスの中で、 ::GetObjectType に失敗する。
デバッグモードだと、CPaintDC::SelectPen の内部で ::GetObjectType を呼び出すからアサーションにひっかかる。
リリースモードでも、明らかに SelectPen に失敗していて色がおかしくなる。

gc の継承に変えると不思議と平気。

あーつまり、デストラクタがオブジェクト固有のCPenを勝手にリリースするからか。そりゃそうか。

(追記)
クラスのメンバとして CPen を持つのをやめて、描画ルーチンを CreatePen と DeleteObject で挟んだら gc_cleanup のデバッグモードでもちゃんと動いた。

修正前のプログラムでも、オブジェクトの数を減らすとアサーションが出るのが遅くなるので、CPen を保存しちゃいかんということですな。

(結論)
GC の効果を検証するためのプログラムを書いたら、思わぬところで CPen の使い方をミスっていたのがまさに GC のおかげで発覚したわけで、つまり GC 万歳ということです。