diff --git a/src/browser.c b/src/browser.c
index b353646afbba02bed6e66be75cbb114732bd4b20..7d2e2261e7ab4b634823a71adda558bd330de6d6 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -185,7 +185,9 @@ void browse_draw_item(struct dir *n, int row, off_t max, int ispar) {
   size = formatsize(flags & BF_AS ? n->asize : n->size);
 
   /* create graph (if necessary) */
-  pc = ((float)(flags & BF_AS ? n->asize : n->size) / (float)(flags & BF_AS ? n->parent->asize : n->parent->size)) * 100.0f;
+  if((pc = (float)(flags & BF_AS ? n->parent->asize : n->parent->size)) < 1)
+    pc = 1.0f;
+  pc = ((float)(flags & BF_AS ? n->asize : n->size) / pc) * 100.0f;
   if(graph == 1 || graph == 3) {
     o = (int)(10.0f*(float)(flags & BF_AS ? n->asize : n->size) / (float)max);
     for(i=0; i<10; i++)