essaye de modifier ccette ligne dans la fonction Belong :
point C( (x*4)/500 - 2 , (y*-4)/500 + 2 );
en :
point C(((double)x*4.)/500. - 2. , ((double)y*(-4.))/500. + 2. );
//J´ai un peu abusé mais comme ça ça devrait aller.
Si ça corrige ton problème (le reste de ton code me semble bon) c´est que lorsque tu divise par 500 tu travaille encore sur des int et pas encore sur des double donc en gros tu as 0, 1, -1 ou -2 peut-être selon l´endroit ou tu te trouve, mais tout les points à l´intérieur d´un gros carré (d´ou les carrés à l´écran) ont les même valeur.
P.S. je te conseille de désactiver le double buffering, ça ne sers à rien ici, et ça te permettra de voir ta fractale se dessinner petit à petit.