Hola:
Los pasos que yo doy son los siguientes: creo la imagen nueva con imagecreatetruecolor, luego reservo un color para hacerlo transparente, lleno la nueva imagen con ese color, y lo hago transparente. Por último uso imagecopy resized (en vez de resampled)...
$original = imagecreatefromstring(file_get_contents($url));
$nueva = imagecreatetruecolor($nuevoWidth, $nuevoHeight);
$transparente = imagecolorallocate($nueva, 255, 255, 255);
imagefill($nueva, 0, 0, $transparente);
imagetransparent($nueva, $transparente);
imagecopyresized($nueva, $original, 0, 0, 0, 0, $nuevoWidth, $nuevoHeight, imagesX($original), imagesY($original));
...
Tal vez puse alguna cosa mal, porque está "a capella"...
Saludos