Initially I wanted to do it in a more right way, without caring about optimization.
I just did the same logic of 2d in 3d at first. The thing is it didn't work.
First try: left, right, top, bottom, front, back, dividing by 3. Also tried not to divide by 3 but by more or less.
Another try: I was taking all 27 voxels around the voxel, or 27-8 (all except those 8 at the far corners).
In all these cases I either have to divide by something that dampens it very very fast done and you don't see nothing (flashing points only) or the colours are bleeding and there is overflow. Simply, I couldn't find the balance. The one I wrote wasn't for optimization purposes but because it seemed to somehow work.