GDライブラリのおかしな性質

先日GDライブラリにはまって数時間とまったのでメモ。
まず下記のようなミニマムコードを書く。

$base = base64_encode(file_get_contents('/opt/www/hogehoge/214.png'));
$gd2 = imagecreatefrompng('/opt/www/hogehoge/214.png');

ob_start();
imagepng($gd2);
$base2 = base64_encode(ob_get_contents());
ob_end_clean();

ob_start();
imagegif($gd2);
$gif3 = ob_get_contents();
ob_end_clean();

$gd3 = imagecreatefromstring($gif3);
ob_start();
imagepng($gd3);
$base3 = base64_encode(ob_get_contents());
ob_end_clean();

GDライブラリを通さずにbase64エンコードされた画像のバイナリデータとGDライブラリに入った画像を比較して、画像が壊れてしまっていないか実験。
ちなみに元画像には透過の設定がしてある。

if($base === $base2){
	echo 'base === base2<br />';
}else{
	echo 'base is not = base2<br />';
}

if($base3 === $base2){
	echo 'base3 === base2<br />';
}else{
	echo 'base3 is not = base2<br />';
}

if($base3 === $base){
	echo 'base3 === base<br />';
}else{
	echo 'base3 is not = base<br />';
}

これの出力結果が

base is not = base2
base3 is not = base2
base3 is not = base

なんとGDライブラリに一度格納された画像の透過は壊れてしまうらしい。。orz
なんとかならないものか。。