diff --git a/Rendering/Parallel/vtkSynchronizedRenderers.cxx b/Rendering/Parallel/vtkSynchronizedRenderers.cxx
index dd24d9a4f02b8039434cd267aa3629e9606bef81..9dcf6fc21ca84d601be0f6ad694be800bb54f61c 100644
--- a/Rendering/Parallel/vtkSynchronizedRenderers.cxx
+++ b/Rendering/Parallel/vtkSynchronizedRenderers.cxx
@@ -18,6 +18,7 @@
 #include "vtkCamera.h"
 #include "vtkCommand.h"
 #include "vtkCommunicator.h"
+#include "vtkFXAAOptions.h"
 #include "vtkImageData.h"
 #include "vtkMatrix4x4.h"
 #include "vtkMultiProcessController.h"
@@ -32,10 +33,14 @@
 
 #ifndef VTK_OPENGL2
 # include "vtkgl.h"
+#else // VTK_OPENGL2
+#include "vtkOpenGLFXAAFilter.h"
 #endif
 
 #include <cassert>
 
+vtkCxxSetObjectMacro(vtkSynchronizedRenderers, FXAAOptions, vtkFXAAOptions)
+
 //----------------------------------------------------------------------------
 class vtkSynchronizedRenderers::vtkObserver : public vtkCommand
 {
@@ -82,6 +87,10 @@ vtkSynchronizedRenderers::vtkSynchronizedRenderers()
   this->Observer = vtkSynchronizedRenderers::vtkObserver::New();
   this->Observer->Target = this;
 
+  this->UseFXAA = false;
+  this->FXAAOptions = vtkFXAAOptions::New();
+  this->FXAAFilter = NULL;
+
   this->Renderer = 0;
   this->ParallelController = 0;
   this->ParallelRendering = true;
@@ -105,6 +114,21 @@ vtkSynchronizedRenderers::~vtkSynchronizedRenderers()
   this->SetParallelController(0);
   this->Observer->Delete();
   this->Observer = 0;
+
+  if (this->FXAAOptions)
+    {
+    this->FXAAOptions->Delete();
+    this->FXAAOptions = NULL;
+    }
+
+  // vtkOpenGLFXAAFilter is only available on opengl2:
+#ifdef VTK_OPENGL2
+  if (this->FXAAFilter)
+    {
+    this->FXAAFilter->Delete();
+    this->FXAAFilter = NULL;
+    }
+#endif // VTK_OPENGL2
 }
 
 //----------------------------------------------------------------------------
@@ -286,6 +310,22 @@ void vtkSynchronizedRenderers::PushImageToScreen()
     }
 
   rawImage.PushToViewport(this->Renderer);
+
+#ifdef VTK_OPENGL2
+  if (this->UseFXAA)
+    {
+    if (!this->FXAAFilter)
+      {
+      this->FXAAFilter = vtkOpenGLFXAAFilter::New();
+      }
+    if (this->FXAAOptions)
+      {
+      this->FXAAFilter->UpdateConfiguration(this->FXAAOptions);
+      }
+    this->FXAAFilter->Execute(this->Renderer);
+    }
+#endif // VTK_OPENGL2
+
 }
 
 ////----------------------------------------------------------------------------
diff --git a/Rendering/Parallel/vtkSynchronizedRenderers.h b/Rendering/Parallel/vtkSynchronizedRenderers.h
index e96e00fb1f433ed34e13e53fae245b73fb941810..15f4a314bf145b33526b4ebd646cc19005e32ace 100644
--- a/Rendering/Parallel/vtkSynchronizedRenderers.h
+++ b/Rendering/Parallel/vtkSynchronizedRenderers.h
@@ -31,9 +31,11 @@
 #include "vtkUnsignedCharArray.h" // needed for vtkUnsignedCharArray.
 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
 
+class vtkFXAAOptions;
 class vtkRenderer;
 class vtkMultiProcessController;
 class vtkMultiProcessStream;
+class vtkOpenGLFXAAFilter;
 class vtkOpenGLRenderer;
 
 class VTKRENDERINGPARALLEL_EXPORT vtkSynchronizedRenderers : public vtkObject
@@ -77,6 +79,18 @@ public:
   vtkGetMacro(WriteBackImages, bool);
   vtkBooleanMacro(WriteBackImages, bool);
 
+  // Description:
+  // Enable FXAA antialiasing. FXAA is applied after all rendering results are
+  // composited into the final image.
+  vtkSetMacro(UseFXAA, bool)
+  vtkGetMacro(UseFXAA, bool)
+  vtkBooleanMacro(UseFXAA, bool)
+
+  // Description:
+  // The configuration options for FXAA antialiasing.
+  vtkGetObjectMacro(FXAAOptions, vtkFXAAOptions)
+  virtual void SetFXAAOptions(vtkFXAAOptions*);
+
   // Description:
   // Get/Set the root-process id. This is required when the ParallelController
   // is a vtkSocketController. Set to 0 by default (which will not work when
@@ -198,6 +212,10 @@ protected:
     void CopyTo(vtkRenderer*);
     };
 
+  bool UseFXAA;
+  vtkFXAAOptions *FXAAOptions;
+  vtkOpenGLFXAAFilter *FXAAFilter;
+
   // These methods are called on all processes as a consequence of corresponding
   // events being called on the renderer.
   virtual void HandleStartRender();