Index: /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.Designer.cs
===================================================================
--- /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.Designer.cs	(revision 9414)
+++ /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.Designer.cs	(revision 9415)
@@ -58,5 +58,7 @@
       this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
       this.propertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.saveImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
       ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
       this.pictureBoxContextMenuStrip.SuspendLayout();
@@ -65,7 +67,7 @@
       // pictureBox
       // 
-      this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.pictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.pictureBox.BackColor = System.Drawing.Color.White;
       this.pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
@@ -76,9 +78,9 @@
       this.pictureBox.TabIndex = 0;
       this.pictureBox.TabStop = false;
+      this.pictureBox.SizeChanged += new System.EventHandler(this.pictureBox_SizeChanged);
       this.pictureBox.VisibleChanged += new System.EventHandler(this.pictureBox_VisibleChanged);
       this.pictureBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseDown);
       this.pictureBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove);
       this.pictureBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseUp);
-      this.pictureBox.SizeChanged += new System.EventHandler(this.pictureBox_SizeChanged);
       // 
       // pictureBoxContextMenuStrip
@@ -94,7 +96,8 @@
             this.intoBackgroundToolStripMenuItem,
             this.toolStripMenuItem2,
-            this.propertiesToolStripMenuItem});
+            this.propertiesToolStripMenuItem,
+            this.saveImageToolStripMenuItem});
       this.pictureBoxContextMenuStrip.Name = "pictureBoxContextMenuStrip";
-      this.pictureBoxContextMenuStrip.Size = new System.Drawing.Size(165, 192);
+      this.pictureBoxContextMenuStrip.Size = new System.Drawing.Size(163, 214);
       // 
       // moveToolStripMenuItem
@@ -103,5 +106,5 @@
       this.moveToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
       this.moveToolStripMenuItem.Name = "moveToolStripMenuItem";
-      this.moveToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.moveToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.moveToolStripMenuItem.Text = "&Move";
       this.moveToolStripMenuItem.Click += new System.EventHandler(this.moveToolStripMenuItem_Click);
@@ -110,5 +113,5 @@
       // 
       this.zoomToolStripMenuItem.Name = "zoomToolStripMenuItem";
-      this.zoomToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.zoomToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.zoomToolStripMenuItem.Text = "&Zoom";
       this.zoomToolStripMenuItem.Click += new System.EventHandler(this.zoomToolStripMenuItem_Click);
@@ -117,5 +120,5 @@
       // 
       this.selectToolStripMenuItem.Name = "selectToolStripMenuItem";
-      this.selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.selectToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.selectToolStripMenuItem.Text = "&Select";
       this.selectToolStripMenuItem.Click += new System.EventHandler(this.selectToolStripMenuItem_Click);
@@ -124,5 +127,5 @@
       // 
       this.toolStripMenuItem1.Name = "toolStripMenuItem1";
-      this.toolStripMenuItem1.Size = new System.Drawing.Size(161, 6);
+      this.toolStripMenuItem1.Size = new System.Drawing.Size(159, 6);
       // 
       // oneLayerUpToolStripMenuItem
@@ -130,5 +133,5 @@
       this.oneLayerUpToolStripMenuItem.Enabled = false;
       this.oneLayerUpToolStripMenuItem.Name = "oneLayerUpToolStripMenuItem";
-      this.oneLayerUpToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.oneLayerUpToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.oneLayerUpToolStripMenuItem.Text = "One Layer &Up";
       this.oneLayerUpToolStripMenuItem.Click += new System.EventHandler(this.oneLayerUpToolStripMenuItem_Click);
@@ -138,5 +141,5 @@
       this.oneLayerDownToolStripMenuItem.Enabled = false;
       this.oneLayerDownToolStripMenuItem.Name = "oneLayerDownToolStripMenuItem";
-      this.oneLayerDownToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.oneLayerDownToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.oneLayerDownToolStripMenuItem.Text = "OneLayer &Down";
       this.oneLayerDownToolStripMenuItem.Click += new System.EventHandler(this.oneLayerDownToolStripMenuItem_Click);
@@ -146,5 +149,5 @@
       this.intoForegroundToolStripMenuItem.Enabled = false;
       this.intoForegroundToolStripMenuItem.Name = "intoForegroundToolStripMenuItem";
-      this.intoForegroundToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.intoForegroundToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.intoForegroundToolStripMenuItem.Text = "Into &Foreground";
       this.intoForegroundToolStripMenuItem.Click += new System.EventHandler(this.intoForegroundToolStripMenuItem_Click);
@@ -154,5 +157,5 @@
       this.intoBackgroundToolStripMenuItem.Enabled = false;
       this.intoBackgroundToolStripMenuItem.Name = "intoBackgroundToolStripMenuItem";
-      this.intoBackgroundToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.intoBackgroundToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.intoBackgroundToolStripMenuItem.Text = "Into &Background";
       this.intoBackgroundToolStripMenuItem.Click += new System.EventHandler(this.intoBackgroundToolStripMenuItem_Click);
@@ -161,5 +164,5 @@
       // 
       this.toolStripMenuItem2.Name = "toolStripMenuItem2";
-      this.toolStripMenuItem2.Size = new System.Drawing.Size(161, 6);
+      this.toolStripMenuItem2.Size = new System.Drawing.Size(159, 6);
       // 
       // propertiesToolStripMenuItem
@@ -167,7 +170,20 @@
       this.propertiesToolStripMenuItem.Enabled = false;
       this.propertiesToolStripMenuItem.Name = "propertiesToolStripMenuItem";
-      this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(164, 22);
+      this.propertiesToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
       this.propertiesToolStripMenuItem.Text = "&Properties";
       this.propertiesToolStripMenuItem.Click += new System.EventHandler(this.propertiesToolStripMenuItem_Click);
+      // 
+      // saveImageToolStripMenuItem
+      // 
+      this.saveImageToolStripMenuItem.Name = "saveImageToolStripMenuItem";
+      this.saveImageToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
+      this.saveImageToolStripMenuItem.Text = "Save Image";
+      this.saveImageToolStripMenuItem.Click += new System.EventHandler(this.saveImageToolStripMenuItem_Click);
+      // 
+      // saveFileDialog
+      // 
+      this.saveFileDialog.DefaultExt = "emf";
+      this.saveFileDialog.FileName = "*.emf";
+      this.saveFileDialog.Filter = "Enhanced metafile|*.emf|Bitmap files|*.bmp";
       // 
       // ChartControl
@@ -201,4 +217,6 @@
     protected System.Windows.Forms.ToolStripMenuItem intoBackgroundToolStripMenuItem;
     protected System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
+    private System.Windows.Forms.ToolStripMenuItem saveImageToolStripMenuItem;
+    private System.Windows.Forms.SaveFileDialog saveFileDialog;
 
   }
Index: /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.cs
===================================================================
--- /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.cs	(revision 9414)
+++ /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartControl.cs	(revision 9415)
@@ -24,4 +24,5 @@
 using System.Drawing;
 using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
 using System.Windows.Forms;
 
@@ -29,4 +30,5 @@
   public partial class ChartControl : UserControl {
     private Bitmap bitmap;
+    public Bitmap Bitmap { get; private set; }
     private bool renderingRequired;
     private Point buttonDownPoint;
@@ -135,5 +137,5 @@
     }
 
-    private void pictureBox_MouseMove(object sender, MouseEventArgs e) {
+    protected virtual void pictureBox_MouseMove(object sender, MouseEventArgs e) {
       var text = Chart.GetToolTipText(e.Location);
       if (toolTip.GetToolTip(pictureBox) != text)
@@ -244,4 +246,29 @@
       Chart.Mode = mode;
     }
+
+    private void SaveImageAsBitmap(string filename) {
+      if (bitmap == null) throw new Exception("Bitmap is null.");
+      bitmap.Save(filename);
+    }
+
+    private void SaveImageAsEmf(string filename) {
+      using (Graphics g = CreateGraphics()) {
+        using (Metafile file = new Metafile(filename, g.GetHdc())) {
+          using (Graphics emfFile = Graphics.FromImage(file)) {
+            Chart.Render(emfFile, pictureBox.Width, pictureBox.Height);
+          }
+        }
+        g.ReleaseHdc();
+      }
+    }
+
+    private void saveImageToolStripMenuItem_Click(object sender, EventArgs e) {
+      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
+        string filename = saveFileDialog.FileName.ToLower();
+        if (filename.EndsWith("bmp")) SaveImageAsBitmap(filename);
+        else if (filename.EndsWith("emf")) SaveImageAsEmf(filename);
+        else SaveImageAsBitmap(filename);
+      }
+    }
   }
 }
Index: /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/Group.cs
===================================================================
--- /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/Group.cs	(revision 9414)
+++ /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/Group.cs	(revision 9415)
@@ -117,7 +117,7 @@
       foreach (var primitive in myPrimitives.Where(primitive => primitive.ContainsPoint(point))) {
         primitives.Add(primitive);
-        var @group = primitive as IGroup;
-        if (@group != null)
-          primitives.AddRange((@group).Primitives);
+        var group = primitive as IGroup;
+        if (group != null)
+          primitives.AddRange(group.Primitives);
       }
       return primitives;
Index: /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/LinearPrimitiveBase.cs
===================================================================
--- /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/LinearPrimitiveBase.cs	(revision 9414)
+++ /branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/Primitives/LinearPrimitiveBase.cs	(revision 9415)
@@ -20,7 +20,4 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Text;
 using System.Drawing;
 using System.Drawing.Drawing2D;
