Well actually Array(.0..100.) would have 101 elements, because you get elements from 0 to 100 including 0, setlength(myarray, 100) would set the length to 100 witch is less by one than Array(.0..100.).
This distortion happens because a 2D array in memory is actually an array of 1D arrays, so if you, for example, specify a shorter than actual length the beginning of the second drawn line would contain the pixels at the first lines end in the array and so forth.
And why not use [] instead of (..) ?

try
[pascal]var
cRGB, cRGBA: array of array of Cardinal;

AssignFile(F, Filename);
Reset(F);

Readln(F, SizeX);
Readln(F, SizeY);

SetLength(cRGB, SizeX, SizeY);
SetLength(cRGBA, SizeX, SizeY);

for I := 0 to SizeX-1 do
for J := 0 to SizeY-1 do
begin
Readln(F, cRGB(.I,J.));

if cRGB(.I,J.) = 0 then
cRGBA(.I,J.) := $FF000000
else cRGBA(.I,J.) := cRGB(.I,J.);
end;

Closefile(F);[/pascal]