Ok so I did some tests with seiferalmasy's suggestion to count the items and then call dead but I get the same error :-(

FEngine.FDeadList.Add(Self) in procedure TSprite.Dead;

So, I changed the call to Clear and the error is still there.....must be something wrong in my code? Help please :-)