**Update:** Using `EdgeShapeFunction`: labels=Reverse@{"A","B","C","D"}; i=1; Graph[{a->b,a->b,a->b, a->b}, EdgeShapeFunction->({Text[labels[[i++]],Mean@#],Arrow@#}&)] ![enter image description here][2] ------------ Simplest method to convert a `Graph` `g` to `Graphics` is to use `Show[g]` (see [this answer by @becko](http://mathematica.stackexchange.com/a/25024/125)). We can post-process `Show[g]` to modify the `Text` primitives: Show[Graph[{Labeled[a->b,"A"],Labeled[a->b,"B"]}]]/. Text["A",{x_,y_/; (y<0.)},z___]:>Text["B",{x,y},z] ![enter image description here][1] Or, we can construct a `Graph` with modified edge directions (and correct labels) and post-process it to change the edge directions: Show[Graph[{Labeled[a->b,"A"], Labeled[b->a,"B"]}]]/. BezierCurve[{{-1.,0.},m__,y_}]:>BezierCurve[{{1.,0.},m,{-1.,0.}}] (* same picture *) [1]: https://i.sstatic.net/K9nTv.png [2]: https://i.sstatic.net/ddntg.png