diff --git a/src/charge.c b/src/charge.c
index 06f27ec759488d5b80f79afbf9f6836da7ef3b4c..afb93696cb6418bbd906f47381e3be5ef7dbf2f5 100644
--- a/src/charge.c
+++ b/src/charge.c
@@ -17,10 +17,10 @@ double compute_delta_x(int width, int height) {
     return 1.0 / sqrt((width * width) + (height * height));
 }
 
-bool compute_next_point(charge_t *charges, int num_charges, vector2_t current_pos, double eps, vector2_t *new_pos, double dx) {
+bool compute_next_point(charge_t *charges, int num_charges, vector2_t current_pos, double eps, vector2_t *new_pos, double dx, int orientation) {
     vector2_t electric_field;
     if (compute_total_normalized_e(charges, num_charges, current_pos, eps, &electric_field)) {
-        *new_pos = vector2_add(current_pos, vector2_multiply(electric_field, dx));
+            *new_pos = vector2_add(current_pos, vector2_multiply(vector2_multiply(electric_field, dx), orientation));
         return true;
     }
 
@@ -66,13 +66,13 @@ bool compute_total_normalized_e(charge_t *charges, int num_charges, vector2_t p,
     return true;
 }
 
-void draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1) {
+void draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1, int orientation) {
     vector2_t current_pos = pos0;
 
     while (true) {
         vector2_t new_pos;
 
-        if (!compute_next_point(charges, num_charges, current_pos, 4.5e-2, &new_pos, dx)) {
+        if (!compute_next_point(charges, num_charges, current_pos, 4.5e-2, &new_pos, dx, orientation)) {
             break;
         }
 
@@ -82,11 +82,16 @@ void draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_char
 
         coordinates_t current_coordinates = position_to_coordinates(SCREEN_WIDTH, SCREEN_HEIGHT, x0, x1, y0, y1, current_pos);
         coordinates_t new_coordinates = position_to_coordinates(SCREEN_WIDTH, SCREEN_HEIGHT, x0, x1, y0, y1, new_pos);
-        gfx_draw_line(ctxt, current_coordinates, new_coordinates, COLOR_BLUE);
+        gfx_draw_line(ctxt, current_coordinates, new_coordinates, COLOR_WHITE);
         current_pos = new_pos;
     }
 }
 
+void draw_field_lines(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1){
+    draw_field_line(ctxt, charges, num_charges, dx, pos0, x0, x1, y0, y1, -1);
+    draw_field_line(ctxt, charges, num_charges, dx, pos0, x0, x1, y0, y1, 1);
+}
+
 void draw_charges(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double x0, double x1, double y0, double y1) {
     for (int32_t i = 0; i < num_charges; i += 1) {
         coordinates_t c = position_to_coordinates(SCREEN_WIDTH, SCREEN_HEIGHT, x0, x1, y0, y1, charges[i].pos);
diff --git a/src/charge.h b/src/charge.h
index 29f02d38e7e766ccf7fd6e855ce8e05d49e9d562..a2a29b7303626b138f30eba6b188d75334c28563 100644
--- a/src/charge.h
+++ b/src/charge.h
@@ -22,7 +22,7 @@ charge_t charge_create(double q, vector2_t pos);
 
 bool compute_e(charge_t c, vector2_t p, double eps, vector2_t *e);
 bool compute_total_normalized_e(charge_t *charges, int num_charges, vector2_t p, double eps, vector2_t *e);
-void draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1);
+void draw_field_line(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1, int orientation);
 void draw_charges(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double x0, double x1, double y0, double y1);
-
+void draw_field_lines(struct gfx_context_t *ctxt, charge_t *charges, int num_charges, double dx, vector2_t pos0, double x0, double x1, double y0, double y1);
 #endif
diff --git a/src/main.c b/src/main.c
index b0bd3ef066f2da8a4ba0f846f63a72c4b0ff1ca5..e49c01343a9d97a6e7d636ccd9ca6d4d9d30dde1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,7 +31,7 @@ int main(int argc, char *argv[]) {
 
     gfx_clear(canvas, COLOR_BLACK);
     draw_charges(canvas, charges, num_charges, x0, x1, y0, y1);
-    draw_field_line(canvas, charges, num_charges, dx, vector2_create(.5, .25), x0, x1, y0, y1);
+    draw_field_lines(canvas, charges, num_charges, dx, vector2_create(.5, .25), x0, x1, y0, y1);
     gfx_present(canvas);
 
     while (true) {