That probably happened because you had 2 classes checking for removals in different places of the particle array. I moved them to one loop that checks the same range to prevent this.