diff --git a/opam/opam b/opam/opam
index 1a4556250e9963f74ffb6b7628b918b2a527b501..3b5bfd175e4f6a47e25746402ad6da257866fbe7 100644
--- a/opam/opam
+++ b/opam/opam
@@ -66,7 +66,8 @@ build: [
   ["autoconf"] {pinned}
   ["./configure" "--prefix" prefix
                  "--disable-gui" { !conf-gtksourceview:installed |
-                                   !conf-gnomecanvas:installed }
+                                   ( !conf-gnomecanvas:installed &
+                                     !lablgtk3:installed) }
                  "--mandir=%{man}%"
   ]
   [make "-j%{jobs}%"]
@@ -88,9 +89,9 @@ depends: [
   "ocamlfind" # needed beyond build stage, used by -load-module
   "zarith"
   "conf-autoconf" { build }
-  "lablgtk" { >= "2.18.2" } #for ocaml >= 4.02.1
+  ( ( "lablgtk" { >= "2.18.2" } & "conf-gnomecanvas" )
+  | ( "lablgtk3" { >= "3.0.beta4" } & "lablgtk3-sourceview3"))
   "conf-gtksourceview"
-  "conf-gnomecanvas"
   "alt-ergo"
   "conf-graphviz" { post }
 ]