When using textures that are not power of two with the quad particle system, CCQuadParticleSystem does not take into account the actual texture size. A 400x400 texture will still be used at a 512x512 size and thus drawing incorrectly. Here's my fix:
-(void)setTexture:(CCTexture2D *)tex {
[super setTexture:tex];
[self initTexCoords];
}
-(void) initTexCoords
{
for(int i=0; i<totalParticles; i++) {
// top-left vertex:
quads[i].bl.texCoords.u = 0;
quads[i].bl.texCoords.v = 0;
// bottom-left vertex:
quads[i].br.texCoords.u = texture_.maxS;//1;
quads[i].br.texCoords.v = 0;
// top-right vertex:
quads[i].tl.texCoords.u = 0;
quads[i].tl.texCoords.v = texture_.maxT;//1;
// top-right vertex:
quads[i].tr.texCoords.u = texture_.maxS;//1;
quads[i].tr.texCoords.v = texture_.maxT;//1;
}
}