Evtl. stimmen die Texturkoordinaten nicht? Ansonsten sieht der Code für mich ok aus. Das sollte so funktionieren. Füll mal den Hintergrund z.B. mit rot, um zu sehen, ob überhaupt was mit dieser Textur passiert.
P.S.: So kann man das für statische Texturen machen, aber nicht unbedingt für dynamische (d.h. solche, deren Inhalt sich öfter ändert. Dafür solltest du die Pixel aus dem erzeugten BufferedImage nehmen und mittels eines ITextureEffects in die Zieltextur kopieren)...ist effizienter.