#Processing, 197 bytes
void setup(){size(255,255);float r=255,a=r,g=0,b=0,i,j,k;background(a);for(i=0;i<a;k=i<43?g+=6:i<85?r-=6:i<a/2?b+=6:i<170?g-=6:i<213?r+=6:a>1?b-=6:0,i++)for(j=0;j<a;point(i,j++))stroke(r,g,b,a-j);}
This outputs the image in a 255x255 sized window
###Ungolfed
void setup(){
size(255,255);
float r=255,a=r,g=0,b=0,i,j,k;
background(a);
for(i=0;i<a;k=i<43?g+=6:i<85?r-=6:i<a/2?b+=6:i<170?g-=6:i<213?r+=6:a>1?b-=6:0,i++)
for(j=0;j<a;point(i,j++))
stroke(r,g,b,a-j);
}