A three-dimensional grid drawing of a graph is a placement of the vertices at distinct points with integer coordinates, such that the straight line segments representing the edges do not cross. Our aim is to produce three-dimensional grid drawings with small bounding box volume. Our first main result is that every n -vertex graph with bounded degeneracy has a three-dimensional grid drawing with O(n3/2 volume. This is the largest known class of graphs that have such drawings. A three-dimensional grid drawing of a directed acyclic graph (dag) is upward if every arc points up in the z-direction. We prove that every dag has an upward three-dimensional grid drawing with O(n3 volume, which is tight for the complete dag. The previous best upper bound was O(n4. Our main result concerning upward drawings is that every c-colourable dag ( c constant) has an upward three-dimensional grid drawing with O(n2 volume. This result matches the bound in the undirected case, and improves the best known bound from O(n3 for many classes of dags, including planar, series parallel, and outerplanar. Improved bounds are also obtained for tree dags. We prove a strong relationship between upward three-dimensional grid drawings, upward track layouts, and upward queue layouts. Finally, we study upward three-dimensional grid drawings with bends in the edges.