diff --git a/lib/Analysis/DataStructure/Printer.cpp b/lib/Analysis/DataStructure/Printer.cpp
index 6a85ded..7af6467 100644
--- a/lib/Analysis/DataStructure/Printer.cpp
+++ b/lib/Analysis/DataStructure/Printer.cpp
@@ -69,8 +69,7 @@
   }
 
   static const char *getGraphProperties(const DSGraph *G) {
-    return "\tedge [arrowtail=\"dot\"];\n"
-           "\tsize=\"10,7.5\";\n"
+    return "\tsize=\"10,7.5\";\n"
            "\trotate=\"90\";\n";
   }
 
@@ -135,21 +134,21 @@
       if (DSNode *N = Call.getRetVal().getNode()) {
         int EdgeDest = Call.getRetVal().getOffset() >> DS::PointerShift;
         if (EdgeDest == 0) EdgeDest = -1;
-        GW.emitEdge(&Call, 0, N, EdgeDest, "color=gray63");
+        GW.emitEdge(&Call, 0, N, EdgeDest, "color=gray63,tailclip=false");
       }
 
       // Print out the callee...
       if (Call.isIndirectCall()) {
         DSNode *N = Call.getCalleeNode();
         assert(N && "Null call site callee node!");
-        GW.emitEdge(&Call, 1, N, -1, "color=gray63");
+        GW.emitEdge(&Call, 1, N, -1, "color=gray63,tailclip=false");
       }
 
       for (unsigned j = 0, e = Call.getNumPtrArgs(); j != e; ++j)
         if (DSNode *N = Call.getPtrArg(j).getNode()) {
           int EdgeDest = Call.getPtrArg(j).getOffset() >> DS::PointerShift;
           if (EdgeDest == 0) EdgeDest = -1;
-          GW.emitEdge(&Call, j+2, N, EdgeDest, "color=gray63");
+          GW.emitEdge(&Call, j+2, N, EdgeDest, "color=gray63,tailclip=false");
         }
     }
   }
