Index: graph_displayer_canvas-node.cc
===================================================================
--- graph_displayer_canvas-node.cc	(revision 28)
+++ graph_displayer_canvas-node.cc	(revision 31)
@@ -6,13 +6,26 @@
 int GraphDisplayerCanvas::changeNodeRadius (std::string mapname, Graph::Node node)
 {
+  Graph::NodeMap<double> * actual_map;
+  if(mapname=="Default")
+    {
+      actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_RADIUS]);
+    }
+  else
+    {
+      actual_map=(mapstorage.nodemap_storage)[mapname];
+    }
+
   if(node==INVALID)
     {
       for (NodeIt i(g); i!=INVALID; ++i)
 	{
-	  int w=(int)(*(mapstorage.nodemap_storage)[mapname])[i];
+	  int w=(int)(*actual_map)[i];
 	  if(w>=0)
 	    {
 	      double x1, y1, x2, y2;
-	      nodesmap[i]->get_bounds(x1, y1, x2, y2);
+	      x1=nodesmap[i]->property_x1().get_value();
+	      x2=nodesmap[i]->property_x2().get_value();
+	      y1=nodesmap[i]->property_y1().get_value();
+	      y2=nodesmap[i]->property_y2().get_value();
 	      nodesmap[i]->property_x1().set_value((x1+x2)/2-w);
 	      nodesmap[i]->property_x2().set_value((x1+x2)/2+w);
@@ -24,9 +37,14 @@
   else
     {
-      int w=(int)(*(mapstorage.nodemap_storage)[mapname])[node];
+      //I think only new nodes use this case
+//       int w=(int)(*actual_map)[node];
+      int w=(int)(node_property_defaults[N_RADIUS]);
       if(w>=0)
 	{
 	  double x1, y1, x2, y2;
-	  nodesmap[node]->get_bounds(x1, y1, x2, y2);
+	  x1=nodesmap[node]->property_x1().get_value();
+	  x2=nodesmap[node]->property_x2().get_value();
+	  y1=nodesmap[node]->property_y1().get_value();
+	  y2=nodesmap[node]->property_y2().get_value();
 	  nodesmap[node]->property_x1().set_value((x1+x2)/2-w);
 	  nodesmap[node]->property_x2().set_value((x1+x2)/2+w);
@@ -45,4 +63,28 @@
   //green in RGB
 
+  Graph::NodeMap<double> * actual_map;
+  if(mapname=="Default")
+    {
+      actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]);
+    }
+  else
+    {
+      actual_map=(mapstorage.nodemap_storage)[mapname];
+    }
+
+  double max, min;
+
+  if(mapname!="Default")
+    {
+      max=mapstorage.maxOfNodeMap(mapname);
+      min=mapstorage.minOfNodeMap(mapname);
+    }
+  else
+    {
+      max=node_property_defaults[N_COLOR];
+      min=node_property_defaults[N_COLOR];
+    }
+
+
   if(node==INVALID)
     {
@@ -50,10 +92,8 @@
       for (NodeIt i(g); i!=INVALID; ++i)
 	{
-	  double w=(*(mapstorage.nodemap_storage)[mapname])[i];
-	  double max=mapstorage.maxOfNodeMap(mapname);
-	  double min=mapstorage.minOfNodeMap(mapname);
-      
-	  //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
 	  Gdk::Color color;
+
+	  double w=(*actual_map)[i];
+
 	  if(max!=min)
 	    {
@@ -70,10 +110,8 @@
   else
     {
-      double w=(*(mapstorage.nodemap_storage)[mapname])[node];
-      double max=mapstorage.maxOfNodeMap(mapname);
-      double min=mapstorage.minOfNodeMap(mapname);
-      
-      //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
       Gdk::Color color;
+
+      double w=(*actual_map)[node];
+
       if(max!=min)
 	{
@@ -97,5 +135,14 @@
   //in that case empty string will be written, because
   //that is the deleter map
-  //\todo isn't it a bit woodcutter?
+
+  Graph::NodeMap<double> * actual_map;
+  if(mapname=="Default")
+    {
+      actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]);
+    }
+  else
+    {
+      actual_map=(mapstorage.nodemap_storage)[mapname];
+    }
 
   if(node==INVALID)
@@ -103,7 +150,7 @@
       for (NodeIt i(g); i!=INVALID; ++i)
 	{
-	  if(mapname!=node_property_strings[N_TEXT])
-	    {
-	      double number=(*(mapstorage.nodemap_storage)[mapname])[i];
+	  if(mapname!="Default")
+	    {
+	      double number=(*actual_map)[i];
 	      int length=1;
 	      //if number is smaller than one, length would be negative, or invalid
@@ -139,7 +186,7 @@
   else
     {
-      if(mapname!=node_property_strings[N_TEXT])
-	{
-	  double number=(*(mapstorage.nodemap_storage)[mapname])[node];
+      if(mapname!="Default")
+	{
+	  double number=(*actual_map)[node];
 	  int length=1;
 	  //if number is smaller than one, length would be negative, or invalid
