ビットマップのメモリリークで困っています。

pictureBoxコンポーネントをフォームに配置し、プログラム上で以下のような記述で描画しています。

// pictureBoxコンポーネントからBitmapを抽出する
Bitmap bmp = pictureBox->Image;

// 描画
bmp.SetPixel( 10, 10, Color::FromArgb( 255, 255, 255 ) );

// BitamapをpictureBoxコンポーネントにセットする
pictureBox->Image = Image::FromHbitmap( bmp.GetHbitmap() );

この処理をタイマーで定期的に行うのですが、処理を行う度に抽出したビットマップ分の
メモリが増加していき、しまいにはメモリが足りないと言われてプログラムが落ちます。

bmp.Dispose()はプライベート関数なので呼べず、Deleteも効きませんでした。
そもそも、自動変数的に宣言しているので、スコープ(タイマー処理関数内)を抜けたら
自動的に解放されるのでは、とも思います。

どのように対処すればよいでしょうか?