If blurring helps, then you can further improve the result by supersampling the volume with a high-quality interpolator. This will, of course, be much more resource-intensive.
#include "vtkImageSincInterpolator.h"
#include "vtkImageResample.h"
auto interpolator = vtkSmartPointer<vtkImageSincInterpolator>::New();
interpolator->SetWindowFunctionToKaiser();
// optional: use the interpolator to apply a brick wall bandpass filter
interpolator->SetBlurFactors(2.0, 2.0, 2.0);
auto resample = vtkSmartPointer<vtkImageResample>::New();
resample->SetInputConnection(...);
resample->SetInterpolator(interpolator);
resample->SetMagnificationFactors(2.0, 2.0, 2.0);
resample->Update();