Dein Code habe ich mir nicht angeguckt, aber Funktionen wie Scale usw beziehen sich immer auf alles, außer Du grenzt das mit PushMatrix/Popmatrix ab.
Das ist nicht ganz richtig: glScaleF bezieht sich auf alles, was danach kommt.
Das gilt übrigens auch für das glTranslateF, wobei ich mich zunächst wunderte, daß du nicht auch eine additive Verschiebung bemängelst - bis mir dann die Sequenz
Delphi-Quellcode:
If i <> 1 then
glTranslatef(-APosX[i-1], -APosY[i-1], 0);
auffiel, mit der du das glTranslateF des ersten Dreiecks wieder rückgängig machst. Natürlich kannst du das für das glScaleF genauso machen, aber der empfohlene Mechanismus ist hier tatsächlich glPushMatrix/glPopMatrix. Dabei ist allerdings zu beachten, daß der Matrix-Stack nur eine sehr geringe Tiefe hat.