OMG, this bug was annoying.... FreeAndNil was setting BmpArray[I] to nil before the RemoveBMP call in Free. Caused a Bitmap doesn't exist exception...