diff -Naurp src3/fltk-1.3.3/FL/Enumerations.H tmp3/fltk-1.3.3/FL/Enumerations.H
--- src3/fltk-1.3.3/FL/Enumerations.H	2014-10-15 17:00:20 -0400
+++ tmp3/fltk-1.3.3/FL/Enumerations.H	2015-01-06 08:06:09 -0500
@@ -528,6 +528,18 @@ enum Fl_Boxtype { // boxtypes (if you ch
   _FL_GLEAM_THIN_DOWN_BOX,	///< gleam version of FL_GLEAM_THIN_DOWN_BOX
   _FL_GLEAM_ROUND_UP_BOX,   	///< gleam version of FL_GLEAM_ROUND_UP_BOX
   _FL_GLEAM_ROUND_DOWN_BOX,	///< gleam version of FL_GLEAM_ROUND_DOWN_BOX
+  _FL_OXY_UP_BOX,
+  _FL_OXY_DOWN_BOX,
+  _FL_OXY_UP_FRAME,
+  _FL_OXY_DOWN_FRAME,
+  _FL_OXY_THIN_UP_BOX,
+  _FL_OXY_THIN_DOWN_BOX,
+  _FL_OXY_THIN_UP_FRAME,
+  _FL_OXY_THIN_DOWN_FRAME,
+  _FL_OXY_ROUND_UP_BOX,
+  _FL_OXY_ROUND_DOWN_BOX,
+  _FL_OXY_BUTTON_UP_BOX,
+  _FL_OXY_BUTTON_DOWN_BOX,
   FL_FREE_BOXTYPE		///< the first free box type for creation of new box types
 };
 extern FL_EXPORT Fl_Boxtype fl_define_FL_ROUND_UP_BOX();
@@ -584,6 +596,20 @@ extern FL_EXPORT Fl_Boxtype fl_define_FL
 #define FL_GLEAM_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+6)
 #define FL_GLEAM_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_GLEAM_UP_BOX()+7)
 
+extern FL_EXPORT Fl_Boxtype fl_define_FL_OXY_UP_BOX();
+#define FL_OXY_UP_BOX fl_define_FL_OXY_UP_BOX()
+#define FL_OXY_DOWN_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+1)
+#define FL_OXY_UP_FRAME (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+2)
+#define FL_OXY_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+3)
+#define FL_OXY_THIN_UP_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+4)
+#define FL_OXY_THIN_DOWN_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+5)
+#define FL_OXY_THIN_UP_FRAME (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+6)
+#define FL_OXY_THIN_DOWN_FRAME (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+7)
+#define FL_OXY_ROUND_UP_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+8)
+#define FL_OXY_ROUND_DOWN_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+9)
+#define FL_OXY_BUTTON_UP_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+10)
+#define FL_OXY_BUTTON_DOWN_BOX (Fl_Boxtype)(fl_define_FL_OXY_UP_BOX()+11)
+
 // conversions of box types to other boxtypes:
 /**
   Get the filled version of a frame.
diff -Naurp src3/fltk-1.3.3/FL/FL_Toggle_Browser.H tmp3/fltk-1.3.3/FL/FL_Toggle_Browser.H
--- src3/fltk-1.3.3/FL/FL_Toggle_Browser.H	1969-12-31 19:00:00 -0500
+++ tmp3/fltk-1.3.3/FL/FL_Toggle_Browser.H	2015-01-06 07:49:14 -0500
@@ -0,0 +1,70 @@
+//
+// "$Id: Fl_Browser.H 9682 2012-09-17 22:44:54Z greg.ercolano $"
+//
+// Toggle Browser for the Fast Light Tool Kit (FLTK). (author Dmitrij K, kdiman at live dot ru)
+//
+// Copyright 1998-2011 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef Fl_Toggle_Browser_H
+#define Fl_Toggle_Browser_H
+
+#include "Fl.H"
+#include "Fl_Browser.H"
+
+class Fl_Toggle_Browser : public Fl_Browser {
+public:
+ Fl_Toggle_Browser(int X, int Y, int W, int H, const char *L = 0):
+ Fl_Browser(X,Y,W,H,L){
+  type(FL_MULTI_BROWSER);
+ }
+ 
+ virtual int handle(int e){
+  
+  switch(e){
+   case FL_PUSH: {
+    if ( Fl::event_button() == FL_LEFT_MOUSE ){
+     int X, Y;
+     int xx, yy, ww, hh, dx, dy;
+     
+     dx = Fl::box_dy(box())*2;
+     dy = Fl::box_dy(box())*2;
+     X=Fl::event_x(); Y=Fl::event_y();
+     xx = x()+dx; yy = y()+dy; ww = x()+w()-(dx*2); hh = y()+h()-(dy*2);
+     
+     if(hscrollbar.visible()){ hh -= hscrollbar.h(); }
+     if(scrollbar.visible()){ ww -= scrollbar.w(); }
+     
+     if(X >= xx && Y >= yy && X < ww && Y < hh){
+      void *item = NULL;
+      if((item = find_item(Fl::event_y())) != NULL){
+       // FIXME : Do we need calling callbacks or not ?
+       Fl_Browser_::select(item, !item_selected(item), 1);
+       return 0;
+      }
+     }
+    }
+    break;
+   }
+   default: break;
+  }
+  
+  return Fl_Browser::handle(e);
+ }
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Browser.H 9682 2012-09-17 22:44:54Z greg.ercolano $".
+//
diff -Naurp src3/fltk-1.3.3/FL/Fl_Input_Choice.H tmp3/fltk-1.3.3/FL/Fl_Input_Choice.H
--- src3/fltk-1.3.3/FL/Fl_Input_Choice.H	2012-12-09 12:45:24 -0500
+++ tmp3/fltk-1.3.3/FL/Fl_Input_Choice.H	2015-01-06 08:08:36 -0500
@@ -9,6 +9,7 @@
 //
 // Copyright 1998-2010 by Bill Spitzak and others.
 // Copyright 2004 by Greg Ercolano.
+// 2013 by Dmitrij K was made adapting for theme Oxy
 //
 // This library is free software. Distribution and use rights are outlined in
 // the file "COPYING" which should have been included with this file.  If this
@@ -27,193 +28,95 @@
 #ifndef Fl_Input_Choice_H
 #define Fl_Input_Choice_H
 
-#include <FL/Fl.H>
-#include <FL/Fl_Group.H>
+#include <FL/Fl_Menu_.H>
 #include <FL/Fl_Input.H>
-#include <FL/Fl_Menu_Button.H>
-#include <FL/fl_draw.H>
-#include <string.h>
-
-/**
-  A combination of the input widget and a menu button.
-
-  \image html input_choice.jpg
-  \image latex input_choice.jpg "Fl_Input_Choice widget" width=6cm
-
-  The user can either type into the input area, or use the
-  menu button chooser on the right to choose an item which loads
-  the input area with the selected text.
-  <P>
-  The application can directly access both the internal Fl_Input 
-  and Fl_Menu_Button widgets respectively using the input() and menubutton()
-  accessor methods.
-*/
-class FL_EXPORT Fl_Input_Choice : public Fl_Group {
-  // Private class to handle slightly 'special' behavior of menu button
-  class InputMenuButton : public Fl_Menu_Button {
-    void draw() {
-      draw_box(FL_UP_BOX, color());
-      fl_color(active_r() ? labelcolor() : fl_inactive(labelcolor()));
-      int xc = x()+w()/2, yc=y()+h()/2;
-      fl_polygon(xc-5,yc-3,xc+5,yc-3,xc,yc+3);
-      if (Fl::focus() == this) draw_focus();
-    }
-  public:
-    InputMenuButton(int X,int Y,int W,int H,const char*L=0) : 
-	Fl_Menu_Button(X, Y, W, H, L) { box(FL_UP_BOX); }
-  };
-
-  Fl_Input *inp_;
-  InputMenuButton *menu_;
-
-  static void menu_cb(Fl_Widget*, void *data) { 
-    Fl_Input_Choice *o=(Fl_Input_Choice *)data;
-    Fl_Widget_Tracker wp(o);
-    const Fl_Menu_Item *item = o->menubutton()->mvalue();
-    if (item && item->flags & (FL_SUBMENU|FL_SUBMENU_POINTER)) return;	// ignore submenus
-    if (!strcmp(o->inp_->value(), o->menu_->text()))
-    {
-      o->Fl_Widget::clear_changed();
-      if (o->when() & FL_WHEN_NOT_CHANGED)
-	o->do_callback();
-    }
-    else
-    {
-      o->inp_->value(o->menu_->text());
-      o->inp_->set_changed();
-      o->Fl_Widget::set_changed();
-      if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE))
-	o->do_callback();
-    }
-    
-    if (wp.deleted()) return;
+#include <FL/Fl_Nav_Button.H>
 
-    if (o->callback() != default_callback)
-    {
-      o->Fl_Widget::clear_changed();
-      o->inp_->clear_changed();
-    }
-  }
+class Fl_Input_Choice: public Fl_Menu_ {
+ Fl_Input input_;
+ Fl_Nav_Button button_;
+ public:
+ 
+  Fl_Input_Choice(int X, int Y, int W, int H, const char *L=0);
+  inline virtual void draw(){
+   int dx = Fl::box_dx(box()), dy = Fl::box_dy(box()), dw = Fl::box_dw(box()), dh = Fl::box_dh(box());
+   int X = x(), Y = y(), W = w(), H = h();
+   fl_push_clip(X,Y,W,H);
+   draw_box(box(), color());
+   input_.damage_resize(X+dx, Y+dy, W-dw-18, H-dh);
+   button_.damage_resize(X+W-18-1, Y+dy/2, 18, H-dh/2);
+   fl_pop_clip();
+}
+  inline int changed() const { return input_.changed() | Fl_Menu_::changed(); }
+  inline void clear_changed() { input_.clear_changed(); Fl_Menu_::clear_changed(); }
+  inline void set_changed() { input_.set_changed(); }
+  
+  inline Fl_Input* input(){ return &input_; }
+  inline Fl_Nav_Button* button(){ return &button_; }
+  
+  inline void add(const char *l){ Fl_Menu_::add(l); }
+  inline void clear() { Fl_Menu_::clear(); }
+  inline const char* value() const { return (input_.value()); }
+  inline void value(const char *val) { input_.value(val); }
+  inline void value(int val) { Fl_Menu_::value(val); input_.value(Fl_Menu_::text(val)); }
+  
+ public:
+  
+  static void input_cb(Fl_Widget *w, void *d){
+   Fl_Input_Choice *o=(Fl_Input_Choice *)d;
+   Fl_Widget_Tracker wp(o);
+   
+   if (o->input()->changed()) {
+    o->Fl_Widget::set_changed();
+    if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE)){ o->do_callback(); }
+   }
+   
+   else {
+    o->Fl_Widget::clear_changed();
+    if (o->when() & FL_WHEN_NOT_CHANGED){ o->do_callback(); }
+   }
+   
+   if (wp.deleted()){ return; }
+   if (o->callback() != default_callback){ o->Fl_Widget::clear_changed(); }
+   }
 
-  static void inp_cb(Fl_Widget*, void *data) { 
-    Fl_Input_Choice *o=(Fl_Input_Choice *)data;
-    Fl_Widget_Tracker wp(o);
-    if (o->inp_->changed()) {
-      o->Fl_Widget::set_changed();
-      if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE))
-	o->do_callback();
-    } else {
-      o->Fl_Widget::clear_changed();
-      if (o->when() & FL_WHEN_NOT_CHANGED)
-	o->do_callback();
+  static void menu_cb(Fl_Widget *w, void *d) {
+   Fl_Input_Choice *o=(Fl_Input_Choice *)d;
+   Fl_Widget_Tracker wp(o);
+   const Fl_Menu_Item *item = NULL;
+   
+   if (Fl::scheme() || fl_contrast(o->textcolor(), FL_BACKGROUND2_COLOR) != o->textcolor()) {
+    item = o->menu()->pulldown(o->x(),o-> y(), o->w(), o->h(), 0, o);
     }
-    
-    if (wp.deleted()) return;
 
-    if (o->callback() != default_callback)
-      o->Fl_Widget::clear_changed();
+   else {
+    Fl_Color c = o->color();
+    o->color(FL_BACKGROUND2_COLOR);
+    item = o->menu()->pulldown(o->x(),o-> y(), o->w(), o->h(), 0, o);
+    o->color(c);
+   }
+   
+   if (!item){ return; }
+   if (item->flags & (FL_SUBMENU|FL_SUBMENU_POINTER)){ return; } // ignore submenus
+   if ( !strcmp(o->input()->value(), item->label())) {
+    o->Fl_Widget::clear_changed();
+    if (o->when() & FL_WHEN_NOT_CHANGED){ o->do_callback(); }
+   }
+   
+   else {
+    o->input()->value(item->label());
+    o->input()->set_changed();
+    o->Fl_Widget::set_changed();
+    if (o->when() & (FL_WHEN_CHANGED|FL_WHEN_RELEASE)){ o->do_callback(); }
+   }
+   if (wp.deleted()){ return; }
+   if (o->callback() != default_callback){
+    o->Fl_Widget::clear_changed();
+    o->input()->clear_changed();
+   }
   }
-
-  // Custom resize behavior -- input stretches, menu button doesn't
-  inline int inp_x() { return(x() + Fl::box_dx(box())); }
-  inline int inp_y() { return(y() + Fl::box_dy(box())); }
-  inline int inp_w() { return(w() - Fl::box_dw(box()) - 20); }
-  inline int inp_h() { return(h() - Fl::box_dh(box())); }
-
-  inline int menu_x() { return(x() + w() - 20 - Fl::box_dx(box())); }
-  inline int menu_y() { return(y() + Fl::box_dy(box())); }
-  inline int menu_w() { return(20); }
-  inline int menu_h() { return(h() - Fl::box_dh(box())); }
-
-public:
-  /**
-    Creates a new Fl_Input_Choice widget using the given position, size,
-    and label string.
-    Inherited destructor destroys the widget and any values associated with it.
-  */
-  Fl_Input_Choice(int X,int Y,int W,int H,const char*L=0);
   
-  /** Adds an item to the menu.
-   You can access the more complex Fl_Menu_Button::add() methods 
-   (setting callbacks, userdata, etc), via menubutton(). Example:
-   \code
-   Fl_Input_Choice *choice = new Fl_Input_Choice(100,10,120,25,"Fonts");
-   Fl_Menu_Button *mb = choice->menubutton();             // use Fl_Input_Choice's Fl_Menu_Button
-   mb->add("Helvetica", 0, MyFont_CB,     (void*)mydata); // use Fl_Menu_Button's add() methods
-   mb->add("Courier",   0, MyFont_CB,     (void*)mydata);
-   mb->add("More..",    0, FontDialog_CB, (void*)mydata);
-   \endcode
-   */
-  void add(const char *s) { menu_->add(s);  }
-  /** Returns the combined changed() state of the input and menu button widget. */
-  int changed() const { return inp_->changed() | Fl_Widget::changed(); }
-  /** Clears the changed() state of both input and menu button widgets. */
-  void clear_changed() { 
-    inp_->clear_changed();
-    Fl_Widget::clear_changed();
-  }
-  /** Sets the changed() state of both input and menu button widgets
-   to the specfied value.*/
-  void set_changed() { 
-    inp_->set_changed();
-    // no need to call Fl_Widget::set_changed()
-  }
-  /** Removes all items from the menu. */
-  void clear() { menu_->clear(); }
-  /** Gets the box type of the menu button */
-  Fl_Boxtype down_box() const { return (menu_->down_box()); }
-  /** Sets the box type of the menu button */
-  void down_box(Fl_Boxtype b) { menu_->down_box(b); }
-  /** Gets the Fl_Menu_Item array used for the menu. */
-  const Fl_Menu_Item *menu() { return (menu_->menu()); }
-  /** Sets the Fl_Menu_Item array used for the menu. */
-  void menu(const Fl_Menu_Item *m) { menu_->menu(m); }
-  void resize(int X, int Y, int W, int H) {
-    Fl_Group::resize(X,Y,W,H);
-    inp_->resize(inp_x(), inp_y(), inp_w(), inp_h());
-    menu_->resize(menu_x(), menu_y(), menu_w(), menu_h());
-  }
-  /// Gets the Fl_Input text field's text color.
-  Fl_Color textcolor() const { return (inp_->textcolor());}
-  /// Sets the Fl_Input text field's text color to \p c.
-  void textcolor(Fl_Color c) { inp_->textcolor(c);}
-  /// Gets the Fl_Input text field's font style.
-  Fl_Font textfont() const { return (inp_->textfont());}
-  /// Sets the Fl_Input text field's font style to \p f.
-  void textfont(Fl_Font f) { inp_->textfont(f);}
-  /// Gets the Fl_Input text field's font size
-  Fl_Fontsize textsize() const { return (inp_->textsize()); }
-  /// Sets the Fl_Input text field's font size to \p s.
-  void textsize(Fl_Fontsize s) { inp_->textsize(s); }
-  /// Returns the Fl_Input text field's current contents.
-  const char* value() const { return (inp_->value()); }
-  /** Sets the Fl_Input text field's contents to \p val.
-   Does not affect the menu selection.*/
-  void value(const char *val) { inp_->value(val); }
-  /** Chooses item# \p val in the menu, and sets the Fl_Input text field
-   to that value. Any previous text is cleared.*/
-  void value(int val) {
-    menu_->value(val);
-    inp_->value(menu_->text(val));
-  }
-  /** Returns a pointer to the internal Fl_Menu_Button widget.
-   This can be used to access any of the methods of the menu button, e.g.
-   \code
-   Fl_Input_Choice *choice = new Fl_Input_Choice(100,10,120,25,"Choice:");
-   [..]
-   // Print all the items in the choice menu
-   for ( int t=0; t<choice->menubutton()->size(); t++ ) {
-       const Fl_Menu_Item &item = choice->menubutton()->menu()[t];
-       printf("item %d -- label=%s\n", t, item.label() ? item.label() : "(Null)");
-   }
-   \endcode
-  */
-  Fl_Menu_Button *menubutton() { return menu_; }
-  /** Returns a pointer to the internal Fl_Input widget.
-   This can be used to directly access all of the Fl_Input widget's
-   methods.*/
-  Fl_Input *input() { return inp_; }
-};
+ };
 
 #endif // !Fl_Input_Choice_H
 
diff -Naurp src3/fltk-1.3.3/FL/Fl_Nav_Button.H tmp3/fltk-1.3.3/FL/Fl_Nav_Button.H
--- src3/fltk-1.3.3/FL/Fl_Nav_Button.H	1969-12-31 19:00:00 -0500
+++ tmp3/fltk-1.3.3/FL/Fl_Nav_Button.H	2015-01-06 08:09:30 -0500
@@ -0,0 +1,242 @@
+//
+// Navigation button (written by "Dmitrij K" <kdiman at live dot ru>) for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2010 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef Fl_Nav_Button_H
+#define Fl_Nav_Button_H
+
+#include "Fl_Button.H"
+#include "Fl_Repeat_Button.H"
+#include "fl_draw.H"
+
+extern FL_EXPORT void oxy_arrow(int x1, int y1, Fl_Align a, bool ac, Fl_Color c, Fl_Color hc=FL_BLACK);
+
+class Fl_Nav_Repeat_Button : public Fl_Repeat_Button {
+ Fl_Color _hlcol;
+ bool _light;
+ Fl_Align _al;
+public:
+ inline void light(bool flag){ if(!(_light = flag)){ _hlcol = FL_BLACK; } }
+ inline bool light(){ return _light; }
+ inline Fl_Nav_Repeat_Button(int x, int y, int w, int h, const char* l=0):Fl_Repeat_Button(x,y,w,h,l) {
+  _hlcol = FL_BLACK;
+  _light = false;
+  align(FL_ALIGN_BOTTOM);
+  box(FL_THIN_UP_BOX);
+  down_box(FL_THIN_DOWN_BOX);
+ }
+ inline void align(Fl_Align a){
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  if(a == FL_ALIGN_TOP || a == FL_ALIGN_BOTTOM || a == FL_ALIGN_RIGHT || a == FL_ALIGN_LEFT){ _al = a; }
+  if(flag_oxy){ Fl_Repeat_Button::align(a); label(""); return; }
+  switch(a){
+    case FL_ALIGN_TOP:{ Fl_Repeat_Button::align(FL_ALIGN_CENTER); Fl_Repeat_Button::label("@-42<"); break; }
+    case FL_ALIGN_BOTTOM:{ Fl_Repeat_Button::align(FL_ALIGN_CENTER); Fl_Repeat_Button::label("@-42>"); break; }
+    case FL_ALIGN_RIGHT:{ Fl_Repeat_Button::align(FL_ALIGN_CENTER); Fl_Repeat_Button::label("@-45>"); break; }
+    case FL_ALIGN_LEFT:{ Fl_Repeat_Button::align(FL_ALIGN_CENTER); Fl_Repeat_Button::label("@-45<"); break; }
+    default:{ Fl_Repeat_Button::align(a); break; }
+   }
+ }
+ inline virtual void draw(){
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  Fl_Align a = Fl_Repeat_Button::align();
+  
+  if(!flag_oxy){
+   align(a);
+   Fl_Repeat_Button::draw();
+   return;
+  }
+  //else if(*label()){ label(""); }
+  
+  //Fl_Color hlcol = 0x0;
+  int dx = Fl::box_dx(FL_DOWN_BOX);
+  //int dy = Fl::box_dy(FL_DOWN_BOX);
+  int W = w();
+  int H = h();
+  int x1;
+  int y1;
+  
+  if (type() == FL_HIDDEN_BUTTON) return;
+  Fl_Color col = value() ? selection_color() : color();
+  draw_box(value() ? (down_box()?down_box():fl_down(box())) : box(), col);
+  draw_backdrop();
+  
+  switch(_al){
+   case FL_ALIGN_TOP:{
+    x1 = x()+W/2-4;
+    y1 = y()+H/2+1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_BOTTOM:{
+    L_BOTTOM:
+    x1 = x()+W/2-4;
+    y1 = y()+H/2-3;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_LEFT:{
+    x1 = x()+W/2+2;
+    y1 = y()+H/2-4-1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_RIGHT:{
+    x1 = x()+W/2-3+dx/2;
+    y1 = y()+H/2-4-1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   default: { goto L_BOTTOM; break; }
+  }
+ }
+ 
+ virtual int handle(int event)
+    {
+     if(!_light){ return Fl_Repeat_Button::handle(event); }
+     bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+     if(!flag_oxy){ return Fl_Repeat_Button::handle(event); }
+     
+        switch (event)
+        {
+        case FL_ENTER:
+            _hlcol = fl_color_average(color(), FL_BLACK, 0.55);
+            Fl_Repeat_Button::redraw();
+            break;
+        case FL_LEAVE:
+            _hlcol = FL_BLACK;
+            Fl_Repeat_Button::redraw();
+            break;
+        }
+        return Fl_Repeat_Button::handle(event);
+    }
+};
+
+
+
+
+
+
+
+
+
+class Fl_Nav_Button : public Fl_Button {
+ Fl_Color _hlcol;
+ bool _light;
+ Fl_Align _al;
+public:
+ inline void light(bool flag){ if(!(_light = flag)){ _hlcol = FL_BLACK; } }
+ inline bool light(){ return _light; }
+ inline Fl_Nav_Button(int x, int y, int w, int h, const char* l=0):Fl_Button(x,y,w,h,l) {
+  _hlcol = FL_BLACK;
+  _light = false;
+  align(FL_ALIGN_TOP);
+  box(FL_THIN_UP_BOX);
+  down_box(FL_THIN_DOWN_BOX);
+ }
+ inline void align(Fl_Align a){
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  if(a == FL_ALIGN_TOP || a == FL_ALIGN_BOTTOM || a == FL_ALIGN_RIGHT || a == FL_ALIGN_LEFT){ _al = a; }
+  if(flag_oxy){ Fl_Button::align(a); label(""); return; }
+  switch(a){
+    case FL_ALIGN_TOP:{ Fl_Button::align(FL_ALIGN_CENTER); Fl_Button::label("@-42<"); break; }
+    case FL_ALIGN_BOTTOM:{ Fl_Button::align(FL_ALIGN_CENTER); Fl_Button::label("@-42>"); break; }
+    case FL_ALIGN_RIGHT:{ Fl_Button::align(FL_ALIGN_CENTER); Fl_Button::label("@-45>"); break; }
+    case FL_ALIGN_LEFT:{ Fl_Button::align(FL_ALIGN_CENTER); Fl_Button::label("@-45<"); break; }
+    default:{ Fl_Button::align(a); break; }
+   }
+ }
+ inline virtual void draw(){
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  Fl_Align a = Fl_Button::align();
+  
+  if(!flag_oxy){
+   align(a);
+   Fl_Button::draw();
+   return;
+  }
+  //else if(*label()){ label(""); }
+  
+  int dx = Fl::box_dx(FL_DOWN_BOX);
+  //int dy = Fl::box_dy(FL_DOWN_BOX);
+  int W = w();
+  int H = h();
+  int x1;
+  int y1;
+  
+  if (type() == FL_HIDDEN_BUTTON) return;
+  Fl_Color col = value() ? selection_color() : color();
+  draw_box(value() ? (down_box()?down_box():fl_down(box())) : box(), col);
+  draw_backdrop();
+  
+  switch(_al){
+   case FL_ALIGN_TOP:{
+    x1 = x()+W/2-4;
+    y1 = y()+H/2+1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_BOTTOM:{
+    L_BOTTOM:
+    x1 = x()+W/2-4;
+    y1 = y()+H/2-3;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_LEFT:{
+    x1 = x()+W/2+2;
+    y1 = y()+H/2-4-1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   
+   case FL_ALIGN_RIGHT:{
+    x1 = x()+W/2-3+dx/2;
+    y1 = y()+H/2-4-1;
+    oxy_arrow(x1, y1, _al, active_r(), color(), _hlcol);
+    break;
+   }
+   default: { goto L_BOTTOM; break; }
+  }
+ }
+ 
+ virtual int handle(int event)
+    {
+     if(!_light){ return Fl_Button::handle(event); }
+     bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+     if(!flag_oxy){ return Fl_Button::handle(event); }
+     
+        switch (event)
+        {
+        case FL_ENTER:
+            _hlcol = fl_color_average(color(), FL_BLACK, 0.55);
+            Fl_Button::redraw();
+            break;
+        case FL_LEAVE:
+            _hlcol = FL_BLACK;
+            Fl_Button::redraw();
+            break;
+        }
+        return Fl_Button::handle(event);
+    }
+ 
+};
+
+#endif
diff -Naurp src3/fltk-1.3.3/FL/Fl_Spinner.H tmp3/fltk-1.3.3/FL/Fl_Spinner.H
--- src3/fltk-1.3.3/FL/Fl_Spinner.H	2014-09-12 05:08:41 -0400
+++ tmp3/fltk-1.3.3/FL/Fl_Spinner.H	2015-01-06 08:15:14 -0500
@@ -29,10 +29,11 @@
 #  include <FL/Enumerations.H>
 #  include <FL/Fl_Group.H>
 #  include <FL/Fl_Input.H>
-#  include <FL/Fl_Repeat_Button.H>
+#  include <FL/Fl_Nav_Button.H>
 #  include <stdio.h>
 #  include <stdlib.h>
 
+#define BUTTON_ARROW_WIDTH 11 // width of buttons for incriment/decriment value
 
 /**
   This widget is a combination of the input
@@ -55,7 +56,7 @@ class FL_EXPORT Fl_Spinner : public Fl_G
 protected:
 #endif
   Fl_Input	input_;			// Input field for the value
-  Fl_Repeat_Button
+  Fl_Nav_Repeat_Button
 		up_button_,		// Up button
 		down_button_;		// Down button
 
@@ -166,10 +167,10 @@ private:
   void		resize(int X, int Y, int W, int H) {
 		  Fl_Group::resize(X,Y,W,H);
 
-		  input_.resize(X, Y, W - H / 2 - 2, H);
-		  up_button_.resize(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2);
-		  down_button_.resize(X + W - H / 2 - 2, Y + H - H / 2,
-		                      H / 2 + 2, H / 2);
+          input_.resize(X, Y, W - BUTTON_ARROW_WIDTH, H);
+          if(Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){ Y+=1; }
+          up_button_.resize(X + W - BUTTON_ARROW_WIDTH, Y, BUTTON_ARROW_WIDTH, H / 2);
+          down_button_.resize(X + W - BUTTON_ARROW_WIDTH, Y + H / 2, BUTTON_ARROW_WIDTH, H / 2);
 		}
   /**
     Sets or returns the amount to change the value when the user clicks a button.
@@ -242,6 +243,9 @@ private:
     Return the background color of the spinner widget's input field.
   */
   Fl_Color	color() const { return(input_.color()); }
+  inline Fl_Input *input(){ return &input_; }
+  inline Fl_Nav_Repeat_Button *button_up(){ return &up_button_; }
+  inline Fl_Nav_Repeat_Button *button_down(){ return &down_button_; }
   /**
     Change the selection color of the spinner widget's input field.
   */
diff -Naurp src3/fltk-1.3.3/fluid/Fl_Menu_Type.cxx tmp3/fltk-1.3.3/fluid/Fl_Menu_Type.cxx
--- src3/fltk-1.3.3/fluid/Fl_Menu_Type.cxx	2011-09-28 16:43:05 -0400
+++ tmp3/fltk-1.3.3/fluid/Fl_Menu_Type.cxx	2015-01-06 08:18:36 -0500
@@ -541,7 +541,7 @@ void Fl_Input_Choice_Type::copy_properti
 
 Fl_Type* Fl_Input_Choice_Type::click_test(int, int) {
   if (selected) return 0; // let user move the widget
-  Fl_Menu_* w = ((Fl_Input_Choice*)o)->menubutton();
+  Fl_Menu_* w = (Fl_Menu_*)o;
   if (!menusize) return 0;
   const Fl_Menu_Item* save = w->mvalue();
   w->value((Fl_Menu_Item*)0);
diff -Naurp src3/fltk-1.3.3/fluid/Fl_Widget_Type.cxx tmp3/fltk-1.3.3/fluid/Fl_Widget_Type.cxx
--- src3/fltk-1.3.3/fluid/Fl_Widget_Type.cxx	2014-02-24 23:24:41 -0500
+++ tmp3/fltk-1.3.3/fluid/Fl_Widget_Type.cxx	2015-01-06 08:19:40 -0500
@@ -684,6 +684,14 @@ Fl_Menu_Item boxmenu[] = {
 {"GLEAM_THIN_DOWN_BOX",0,0,(void *)FL_GLEAM_THIN_DOWN_BOX},
 {"GLEAM_ROUND_UP_BOX",0,0,(void *)FL_GLEAM_ROUND_UP_BOX},
 {"GLEAM_ROUND_DOWN_BOX",0,0,(void *)FL_GLEAM_ROUND_DOWN_BOX},
+{"OXY_UP_BOX",0,0,(void *)FL_OXY_UP_BOX},
+{"OXY_DOWN_BOX",0,0,(void *)FL_OXY_DOWN_BOX},
+{"OXY_THIN_UP_BOX",0,0,(void *)FL_OXY_THIN_UP_BOX},
+{"OXY_THIN_DOWN_BOX",0,0,(void *)FL_OXY_THIN_DOWN_BOX},
+{"OXY_ROUND_UP_BOX",0,0,(void *)FL_OXY_ROUND_UP_BOX},
+{"OXY_ROUND_DOWN_BOX",0,0,(void *)FL_OXY_ROUND_DOWN_BOX},
+{"OXY_BUTTON_UP_BOX",0,0,(void *)FL_OXY_BUTTON_UP_BOX},
+{"OXY_BUTTON_DOWN_BOX",0,0,(void *)FL_OXY_BUTTON_DOWN_BOX},
 {0},
 {"frames",0,0,0,FL_SUBMENU},
 {"UP_FRAME",0,0,(void *)FL_UP_FRAME},
@@ -704,6 +712,10 @@ Fl_Menu_Item boxmenu[] = {
 {"GTK_THIN_DOWN_FRAME",0,0,(void *)FL_GTK_THIN_DOWN_FRAME},
 {"GLEAM_UP_FRAME",0,0,(void *)FL_GLEAM_UP_FRAME},
 {"GLEAM_DOWN_FRAME",0,0,(void *)FL_GLEAM_DOWN_FRAME},
+{"OXY_UP_FRAME",0,0,(void *)FL_OXY_UP_FRAME},
+{"OXY_DOWN_FRAME",0,0,(void *)FL_OXY_DOWN_FRAME},
+{"OXY_THIN_UP_FRAME",0,0,(void *)FL_OXY_THIN_UP_FRAME},
+{"OXY_THIN_DOWN_FRAME",0,0,(void *)FL_OXY_THIN_DOWN_FRAME},
 {0},
 {0}};
 
diff -Naurp src3/fltk-1.3.3/fluid/alignment_panel.cxx tmp3/fltk-1.3.3/fluid/alignment_panel.cxx
--- src3/fltk-1.3.3/fluid/alignment_panel.cxx	2014-10-04 20:03:27 -0400
+++ tmp3/fltk-1.3.3/fluid/alignment_panel.cxx	2015-01-06 08:20:05 -0500
@@ -154,6 +154,7 @@ Fl_Menu_Item menu_scheme_choice[] = {
  {"Plastic", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
  {"GTK+", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
  {"Gleam", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
+ {"Oxy", 0,  0, 0, 0, FL_NORMAL_LABEL, 0, 14, 0}, 
  {0,0,0,0,0,0,0,0,0}
 };
 
diff -Naurp src3/fltk-1.3.3/fluid/alignment_panel.fl tmp3/fltk-1.3.3/fluid/alignment_panel.fl
--- src3/fltk-1.3.3/fluid/alignment_panel.fl	2014-10-04 20:03:27 -0400
+++ tmp3/fltk-1.3.3/fluid/alignment_panel.fl	2015-01-06 08:21:45 -0500
@@ -192,6 +192,10 @@ Function {make_settings_window()} {} {
         label Gleam
         xywh {20 20 35 25}
       }
+      MenuItem {} {
+        label {Oxy}
+        xywh {30 30 35 25}
+      }        
     }
     Fl_Group {} {open
       xywh {116 43 220 126} labelfont 1 align 0
diff -Naurp src3/fltk-1.3.3/fluid/fluid.cxx tmp3/fltk-1.3.3/fluid/fluid.cxx
--- src3/fltk-1.3.3/fluid/fluid.cxx	2014-02-24 23:24:41 -0500
+++ tmp3/fltk-1.3.3/fluid/fluid.cxx	2015-01-06 08:22:25 -0500
@@ -1116,6 +1116,9 @@ void scheme_cb(Fl_Choice *, void *) {
     case 4 : // Gleam
       Fl::scheme("gleam");
       break;
+    case 5 : // Oxy
+      Fl::scheme("oxy");
+      break;
   }
 
   fluid_prefs.set("scheme", scheme_choice->value());
diff -Naurp src3/fltk-1.3.3/src/CMakeLists.txt tmp3/fltk-1.3.3/src/CMakeLists.txt
--- src3/fltk-1.3.3/src/CMakeLists.txt	2014-10-30 12:05:22 -0400
+++ tmp3/fltk-1.3.3/src/CMakeLists.txt	2015-01-06 08:23:11 -0500
@@ -127,6 +127,7 @@ set(CPPFILES
   fl_oval_box.cxx
   fl_overlay.cxx
   fl_overlay_visual.cxx
+  fl_oxy.cxx
   fl_plastic.cxx
   fl_read_image.cxx
   fl_rect.cxx
diff -Naurp src3/fltk-1.3.3/src/Fl_Browser.cxx tmp3/fltk-1.3.3/src/Fl_Browser.cxx
--- src3/fltk-1.3.3/src/Fl_Browser.cxx	2012-07-24 00:37:22 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Browser.cxx	2015-01-06 08:24:46 -0500
@@ -362,12 +362,15 @@ int Fl_Browser::item_height(void *item)
   FL_BLINE* l = (FL_BLINE*)item;
   if (l->flags & NOTDISPLAYED) return 0;
 
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+   
   int hmax = 2; // use 2 to insure we don't return a zero!
 
   if (!l->txt[0]) {
     // For blank lines set the height to exactly 1 line!
     fl_font(textfont(), textsize());
     int hh = fl_height();
+    if (flag_oxy) hh += 2;     
     if (hh > hmax) hmax = hh;
   } else {
     const int* i = column_widths();
@@ -398,6 +401,7 @@ int Fl_Browser::item_height(void *item)
       else str = NULL;
       if((!str && *ptr) || (str && ptr < str)) {
 	fl_font(font, tsize); int hh = fl_height();
+   if (flag_oxy) hh += 2;
 	if (hh > hmax) hmax = hh;
       }
       if (!str || !*str) break;
diff -Naurp src3/fltk-1.3.3/src/Fl_Browser_.cxx tmp3/fltk-1.3.3/src/Fl_Browser_.cxx
--- src3/fltk-1.3.3/src/Fl_Browser_.cxx	2012-12-05 12:17:31 -0500
+++ tmp3/fltk-1.3.3/src/Fl_Browser_.cxx	2015-01-06 08:27:28 -0500
@@ -394,13 +394,17 @@ J1:
   // if not a full redraw or if it is selected:
   void* l = top();
   int yy = -offset_;
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
   for (; l && yy < H; l = item_next(l)) {
     int hh = item_height(l);
     if (hh <= 0) continue;
     if ((damage()&(FL_DAMAGE_SCROLL|FL_DAMAGE_ALL)) || l == redraw1 || l == redraw2) {
       if (item_selected(l)) {
-	fl_color(active_r() ? selection_color() : fl_inactive(selection_color()));
-	fl_rectf(X, yy+Y, W, hh);
+	if (flag_oxy) draw_box(FL_UP_BOX, X, yy+Y, W, hh, selection_color());
+    else {
+     fl_color(active_r() ? selection_color() : fl_inactive(selection_color()));
+     fl_rectf(X, yy+Y, W, hh);
+    }
       } else if (!(damage()&FL_DAMAGE_ALL)) {
 	fl_push_clip(X, yy+Y, W, hh);
 	draw_box(box() ? box() : FL_DOWN_BOX, x(), y(), w(), h(), color());
@@ -408,8 +412,8 @@ J1:
       }
       item_draw(l, X-hposition_, yy+Y, W+hposition_, hh);
       if (l == selection_ && Fl::focus() == this) {
-	draw_box(FL_BORDER_FRAME, X, yy+Y, W, hh, color());
-	draw_focus(FL_NO_BOX, X, yy+Y, W+1, hh+1);
+   	if (!flag_oxy) draw_box(FL_BORDER_FRAME, X, yy+Y, W, hh, color()); // this is border for selection rect
+         draw_focus(flag_oxy?FL_UP_BOX:FL_NO_BOX, X, yy+Y, flag_oxy?W:W+1, hh+1);
       }
       int ww = item_width(l);
       if (ww > max_width) {max_width = ww; max_width_item = l;}
diff -Naurp src3/fltk-1.3.3/src/Fl_Check_Browser.cxx tmp3/fltk-1.3.3/src/Fl_Check_Browser.cxx
--- src3/fltk-1.3.3/src/Fl_Check_Browser.cxx	2011-07-19 00:49:30 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Check_Browser.cxx	2015-01-06 08:31:28 -0500
@@ -98,33 +98,46 @@ void *Fl_Check_Browser::item_prev(void *
 }
 
 int Fl_Check_Browser::item_height(void *) const {
-	return textsize() + 2;
+	bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+    fl_font(textfont(), textsize());
+    int hh = fl_height();
+    if (flag_oxy) hh += 2;
+    return hh;
 }
 
 #define CHECK_SIZE (textsize()-2)
 
 int Fl_Check_Browser::item_width(void *v) const {
 	fl_font(textfont(), textsize());
-	return int(fl_width(((cb_item *)v)->text)) + CHECK_SIZE + 8;
+	return int(fl_width(((cb_item *)v)->text)) + CHECK_SIZE + 8 + 5;
 }
 
-void Fl_Check_Browser::item_draw(void *v, int X, int Y, int, int) const {
+void Fl_Check_Browser::item_draw(void *v, int X, int Y, int W, int H) const {
 	cb_item *i = (cb_item *)v;
 	char *s = i->text;
 	int tsize = textsize();
 	Fl_Color col = active_r() ? textcolor() : fl_inactive(textcolor());
 	int cy = Y + (tsize + 1 - CHECK_SIZE) / 2;
 	X += 2;
+   bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
 
-	fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR));
-	fl_loop(X, cy, X, cy + CHECK_SIZE,
-	        X + CHECK_SIZE, cy + CHECK_SIZE, X + CHECK_SIZE, cy);
+	if (flag_oxy) {
+     fl_draw_box(FL_DOWN_BOX, X+2, cy, 15, 15, color());
+     fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR));
+   }
+   else {
+     fl_color(active_r() ? FL_FOREGROUND_COLOR : fl_inactive(FL_FOREGROUND_COLOR));
+     fl_loop(X+2, cy, X+2, cy + CHECK_SIZE,
+            X+2 + CHECK_SIZE, cy + CHECK_SIZE, X+2 + CHECK_SIZE, cy);
+   }
 	if (i->checked) {
 	  int tx = X + 3;
 	  int tw = CHECK_SIZE - 4;
 	  int d1 = tw/3;
 	  int d2 = tw-d1;
 	  int ty = cy + (CHECK_SIZE+d2)/2-d1-2;
+     if (flag_oxy) { tx +=2; tw=9; d1=3; d2=6; ty=cy+(15+d2)/2-d1-2; }
+        else tx += 2;
 	  for (int n = 0; n < 3; n++, ty++) {
 	    fl_line(tx, ty, tx+d1, ty+d1);
 	    fl_line(tx+d1, ty+d1, tx+tw-1, ty+d1-d2+1);
@@ -135,7 +148,7 @@ void Fl_Check_Browser::item_draw(void *v
 		col = fl_contrast(col, selection_color());
 	}
 	fl_color(col);
-	fl_draw(s, X + CHECK_SIZE + 8, Y + tsize - 1);
+	fl_draw(s, X + CHECK_SIZE + 8, flag_oxy? Y + tsize : Y + tsize - 1);
 }
 
 void Fl_Check_Browser::item_select(void *v, int state) {
@@ -309,10 +322,35 @@ void Fl_Check_Browser::check_none() {
 	redraw();
 }
 
-int Fl_Check_Browser::handle(int event) {
-  if (event==FL_PUSH)
-    deselect();
-  return Fl_Browser_::handle(event);
+int Fl_Check_Browser::handle(int e) { 
+  switch(e){
+   case FL_PUSH: {
+    if ( Fl::event_button() == FL_LEFT_MOUSE ){
+     int X, Y;
+     int xx, yy, ww, hh, dx, dy;
+     
+     dx = Fl::box_dy(box())*2;
+     dy = Fl::box_dy(box())*2;
+     X=Fl::event_x(); Y=Fl::event_y();
+     xx = x()+dx; yy = y()+dy; ww = x()+w()-(dx*2); hh = y()+h()-(dy*2);
+     
+     if(hscrollbar.visible()){ hh -= hscrollbar.h(); }
+     if(scrollbar.visible()){ ww -= scrollbar.w(); }
+     
+     if(X >= xx && Y >= yy && X < ww && Y < hh){
+      void *item = NULL;
+      if((item = find_item(Fl::event_y())) != NULL){
+       Fl_Browser_::select(item, !item_selected(item), 1);
+       return 0;
+      }
+     }
+    }
+    break;
+   }
+   default: break;
+  }
+  
+  return Fl_Browser_::handle(e);
 }
 
 //
diff -Naurp src3/fltk-1.3.3/src/Fl_Choice.cxx tmp3/fltk-1.3.3/src/Fl_Choice.cxx
--- src3/fltk-1.3.3/src/Fl_Choice.cxx	2011-07-19 00:49:30 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Choice.cxx	2015-01-06 08:36:28 -0500
@@ -20,16 +20,18 @@
 #include <FL/Fl_Choice.H>
 #include <FL/fl_draw.H>
 #include "flstring.h"
+#include "fl_oxy.h"
 
 // Emulates the Forms choice widget.  This is almost exactly the same
 // as an Fl_Menu_Button.  The only difference is the appearance of the
 // button: it draws the text of the current pick and a down-arrow.
 
 void Fl_Choice::draw() {
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));   
   int dx = Fl::box_dx(FL_DOWN_BOX);
   int dy = Fl::box_dy(FL_DOWN_BOX);
   int H = h() - 2 * dy;
-  int W = (H > 20) ? 20 : H;
+  int W = (H > 20) ? 20 : H; if (flag_oxy) { W = 17; }
   int X = x() + w() - W - dx;
   int Y = y() + dy;
   int w1 = (W - 4) / 3; if (w1 < 1) w1 = 1;
@@ -46,16 +48,35 @@ void Fl_Choice::draw() {
       fl_polygon(x1, y1 + 1, x1 + w1, y1 - w1 + 1, x1 + 2 * w1, y1 + 1);
     } else {
       // Show smaller up/down arrows with a divider...
-      x1 = x() + w() - 13 - dx;
-      y1 = y() + h() / 2;
-      fl_polygon(x1, y1 - 2, x1 + 3, y1 - 5, x1 + 6, y1 - 2);
-      fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
-
-      fl_color(fl_darker(color()));
-      fl_yxline(x1 - 7, y1 - 8, y1 + 8);
-
-      fl_color(fl_lighter(color()));
-      fl_yxline(x1 - 6, y1 - 8, y1 + 8);
+      Fl_Color hlcol = 0x0;
+      
+      if (flag_oxy) { // if was seted the theme `oxy'
+       x1 = x() + w() - dx/2 - W/2 - 5;
+       y1 = y()-1 + h()/2 - 1;
+       // draw down arrow
+       oxy_arrow(x1, y1, FL_ALIGN_BOTTOM, active_r(), color(), FL_BLACK);
+       // draw the divider
+       hlcol = fl_color_average(color(), FL_BLACK, 0.88);
+       fl_color(active_r()?hlcol:fl_inactive(hlcol));
+       fl_yxline(X, y()+dy, y()+h()-dx-2);
+       hlcol = fl_lighter(color());
+       fl_color(active_r()?hlcol:fl_inactive(hlcol));
+       fl_yxline(X+1, y()+dy, y()+h()-dx-2);
+       
+      } else {
+       x1 = x() + w() - 13 - dx;
+       y1 = y() + h() / 2; if (flag_oxy) { y1 -= 1; }
+       fl_polygon(x1, y1 - 2, x1 + 3, y1 - 5, x1 + 6, y1 - 2);
+       fl_polygon(x1, y1 + 2, x1 + 3, y1 + 5, x1 + 6, y1 + 2);
+       
+       hlcol = fl_darker(color());
+       fl_color(active_r()?hlcol:fl_inactive(hlcol));
+       fl_yxline(x1 - 7, y1 - 8, y1 + 8);
+       
+       hlcol = fl_lighter(color());
+       fl_color(active_r()?hlcol:fl_inactive(hlcol));
+       fl_yxline(x1 - 6, y1 - 8, y1 + 8);
+      }      
     }
   } else {
     if (fl_contrast(textcolor(), FL_BACKGROUND2_COLOR) == textcolor()) {
@@ -78,7 +99,8 @@ void Fl_Choice::draw() {
     // ERCO
     int xx = x() + dx, yy = y() + dy + 1, ww = w() - W, hh = H - 2;
 
-    fl_push_clip(xx, yy, ww, hh);
+    if(flag_oxy) fl_push_clip(xx, yy-1, ww-dx-2, h()-dy-dy/2-1);
+    else fl_push_clip(xx, yy, ww, hh);
 
     if ( Fl::scheme()) {
       Fl_Label l;
@@ -91,9 +113,9 @@ void Fl_Choice::draw() {
       l.color= m.labelcolor_ ? m.labelcolor_ : textcolor();
       if (!m.active()) l.color = fl_inactive((Fl_Color)l.color);
       fl_draw_shortcut = 2; // hack value to make '&' disappear
-      l.draw(xx+3, yy, ww>6 ? ww-6 : 0, hh, FL_ALIGN_LEFT);
+      if(flag_oxy) l.draw(xx+2, yy, ww-dx/2-3, hh, FL_ALIGN_LEFT);
+      else l.draw(xx+3, yy, ww>6 ? ww-6 : 0, hh, FL_ALIGN_LEFT);
       fl_draw_shortcut = 0;
-      if ( Fl::focus() == this ) draw_focus(box(), xx, yy, ww, hh);
     }
     else {
       fl_draw_shortcut = 2; // hack value to make '&' disappear
@@ -102,6 +124,9 @@ void Fl_Choice::draw() {
     }
 
     fl_pop_clip();
+    
+    if ( Fl::focus() == this ) draw_focus(box(), xx, yy-1, flag_oxy?ww-dx/2:ww, flag_oxy?h()-dy-dy:hh);
+    
   }
 
   draw_label();
@@ -155,6 +180,7 @@ int Fl_Choice::value(int v) {
 int Fl_Choice::handle(int e) {
   if (!menu() || !menu()->text) return 0;
   const Fl_Menu_Item* v;
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
   switch (e) {
   case FL_ENTER:
   case FL_LEAVE:
@@ -168,24 +194,24 @@ int Fl_Choice::handle(int e) {
   J1:
     if (Fl::scheme()
 	|| fl_contrast(textcolor(), FL_BACKGROUND2_COLOR) != textcolor()) {
-      v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+      v = menu()->pulldown(x(), y(), w(), h(), flag_oxy?0:mvalue(), this);
     } else {
       // In order to preserve the old look-n-feel of "white" menus,
       // temporarily override the color() of this widget...
       Fl_Color c = color();
       color(FL_BACKGROUND2_COLOR);
-      v = menu()->pulldown(x(), y(), w(), h(), mvalue(), this);
+      v = menu()->pulldown(x(), y(), w(), h(), flag_oxy?0:mvalue(), this);
       color(c);
     }
     if (!v || v->submenu()) return 1;
-    if (v != mvalue()) redraw();
+    /*if (v != mvalue())*/ redraw(); // NOTE: for see the focus (kdiman)
     picked(v);
     return 1;
   case FL_SHORTCUT:
     if (Fl_Widget::test_shortcut()) goto J1;
     v = menu()->test_shortcut();
     if (!v) return 0;
-    if (v != mvalue()) redraw();
+    /*if (v != mvalue())*/ redraw(); // NOTE: for see the focus (kdiman)
     picked(v);
     return 1;
   case FL_FOCUS:
diff -Naurp src3/fltk-1.3.3/src/Fl_Counter.cxx tmp3/fltk-1.3.3/src/Fl_Counter.cxx
--- src3/fltk-1.3.3/src/Fl_Counter.cxx	2012-07-24 00:37:22 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Counter.cxx	2015-01-06 08:39:46 -0500
@@ -20,11 +20,14 @@
 #include <FL/Fl_Counter.H>
 #include <FL/Fl_Simple_Counter.H>
 #include <FL/fl_draw.H>
+#include "fl_oxy.h"
 
 void Fl_Counter::draw() {
   int i; Fl_Boxtype boxtype[5];
   Fl_Color selcolor;
 
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+
   boxtype[0] = box();
   if (boxtype[0] == FL_UP_BOX) boxtype[0] = FL_DOWN_BOX;
   if (boxtype[0] == FL_THIN_UP_BOX) boxtype[0] = FL_THIN_DOWN_BOX;
@@ -36,14 +39,14 @@ void Fl_Counter::draw() {
 
   int xx[5], ww[5];
   if (type() == FL_NORMAL_COUNTER) {
-    int W = w()*15/100;
+    int W = flag_oxy? h() : w()*15/100;
     xx[1] = x();	 ww[1] = W;
     xx[2] = x()+1*W;     ww[2] = W;
     xx[0] = x()+2*W;     ww[0] = w()-4*W;
     xx[3] = x()+w()-2*W; ww[3] = W;
     xx[4] = x()+w()-1*W; ww[4] = W;
   } else {
-    int W = w()*20/100;
+    int W = flag_oxy? h() : w()*20/100;
     xx[1] = 0;	         ww[1] = 0;
     xx[2] = x();	 ww[2] = W;
     xx[0] = x()+W;	 ww[0] = w()-2*W;
@@ -64,17 +67,43 @@ void Fl_Counter::draw() {
   else
     selcolor = fl_inactive(labelcolor());
 
+  int x1, y1;  
+  
   if (type() == FL_NORMAL_COUNTER) {
-    draw_box(boxtype[1], xx[1], y(), ww[1], h(), color());
-    fl_draw_symbol("@-4<<", xx[1], y(), ww[1], h(), selcolor);
+   draw_box(boxtype[1], xx[1], y(), ww[1], h(), color());
+   if(flag_oxy){
+    x1 = xx[1]+ww[1]/2-1; y1 = y()+h()/2-4;
+    // draw two left arrows
+    oxy_arrow(x1, y1, FL_ALIGN_LEFT, active_r(), color(), FL_BLACK);
+    x1+=4;
+    oxy_arrow(x1, y1, FL_ALIGN_LEFT, active_r(), color(), FL_BLACK);
+   }
+   else { fl_draw_symbol("@-4<<", xx[1], y(), ww[1], h(), selcolor); }
   }
   draw_box(boxtype[2], xx[2], y(), ww[2], h(), color());
-  fl_draw_symbol("@-4<",  xx[2], y(), ww[2], h(), selcolor);
+  if(flag_oxy){
+   x1 = xx[2]+ww[2]/2+2; y1 = y()+h()/2-4;
+   // draw one left arrow
+    oxy_arrow(x1, y1, FL_ALIGN_LEFT, active_r(), color(), FL_BLACK);
+  }
+  else { fl_draw_symbol("@-4<",  xx[2], y(), ww[2], h(), selcolor); }
   draw_box(boxtype[3], xx[3], y(), ww[3], h(), color());
-  fl_draw_symbol("@-4>",  xx[3], y(), ww[3], h(), selcolor);
+  if(flag_oxy){
+   x1 = xx[3]+ww[3]/2-2; y1 = y()+h()/2-4;
+   // draw one right arrow
+    oxy_arrow(x1, y1, FL_ALIGN_RIGHT, active_r(), color(), FL_BLACK);
+  }
+  else { fl_draw_symbol("@-4>",  xx[3], y(), ww[3], h(), selcolor); }
   if (type() == FL_NORMAL_COUNTER) {
     draw_box(boxtype[4], xx[4], y(), ww[4], h(), color());
-    fl_draw_symbol("@-4>>", xx[4], y(), ww[4], h(), selcolor);
+    if(flag_oxy){
+     x1 = xx[4]+ww[4]/2-4; y1 = y()+h()/2-4;
+     // draw two right arrows
+     oxy_arrow(x1, y1, FL_ALIGN_RIGHT, active_r(), color(), FL_BLACK);
+     x1+=4;
+     oxy_arrow(x1, y1, FL_ALIGN_RIGHT, active_r(), color(), FL_BLACK);
+   }
+   else { fl_draw_symbol("@-4>>", xx[4], y(), ww[4], h(), selcolor); }
   }
 }
 
diff -Naurp src3/fltk-1.3.3/src/Fl_Group.cxx tmp3/fltk-1.3.3/src/Fl_Group.cxx
--- src3/fltk-1.3.3/src/Fl_Group.cxx	2014-08-29 08:10:11 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Group.cxx	2015-01-06 08:47:38 -0500
@@ -830,30 +830,30 @@ void Fl_Group::draw_outside_label(const
 }
 
 
-Fl_Input_Choice::Fl_Input_Choice (int X,int Y,int W,int H,const char*L) 
-: Fl_Group(X,Y,W,H,L) 
-{
-  Fl_Group::box(FL_DOWN_BOX);
-  align(FL_ALIGN_LEFT);				// default like Fl_Input
-  inp_ = new Fl_Input(inp_x(), inp_y(),
-                      inp_w(), inp_h());
-  inp_->callback(inp_cb, (void*)this);
-  inp_->box(FL_FLAT_BOX);		// cosmetic
-  inp_->when(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED);
-  menu_ = new InputMenuButton(menu_x(), menu_y(),
-                              menu_w(), menu_h());
-  menu_->callback(menu_cb, (void*)this);
-  menu_->box(FL_FLAT_BOX);				// cosmetic
-  end();
+Fl_Input_Choice::Fl_Input_Choice(int X, int Y, int W, int H, const char *L)
+ : Fl_Menu_(X,Y,W,H,L),
+ input_(X,Y,W,H,0),
+ button_(0,0,0,0,0) {
+  box(FL_DOWN_BOX);
+  down_box(FL_UP_BOX);
+  align(FL_ALIGN_LEFT);
+  
+  input_.callback(input_cb, (void*)this);
+  input_.box(FL_FLAT_BOX);
+  input_.when(FL_WHEN_CHANGED|FL_WHEN_NOT_CHANGED);
+  
+  button_.box(FL_THIN_UP_BOX);
+  button_.down_box(FL_THIN_UP_BOX);
+  button_.align(FL_ALIGN_BOTTOM);
+  button_.callback(menu_cb, (void*)this);
 }
 
 
 Fl_Spinner::Fl_Spinner(int X, int Y, int W, int H, const char *L)
 : Fl_Group(X, Y, W, H, L),
-  input_(X, Y, W - H / 2 - 2, H),
-  up_button_(X + W - H / 2 - 2, Y, H / 2 + 2, H / 2, "@-42<"),
-  down_button_(X + W - H / 2 - 2, Y + H - H / 2,
-               H / 2 + 2, H / 2, "@-42>") 
+  input_(X, Y, W - BUTTON_ARROW_WIDTH, H),
+  up_button_(X + W - BUTTON_ARROW_WIDTH, Y, BUTTON_ARROW_WIDTH, H / 2, "@-42<"), 
+  down_button_(X + W - BUTTON_ARROW_WIDTH, Y + H / 2, BUTTON_ARROW_WIDTH, H / 2, "@-42>") 
 {
   end();
   
@@ -871,8 +871,14 @@ Fl_Spinner::Fl_Spinner(int X, int Y, int
   input_.callback((Fl_Callback *)sb_cb, this);
   
   up_button_.callback((Fl_Callback *)sb_cb, this);
+  up_button_.align(FL_ALIGN_TOP);
+  up_button_.box(FL_THIN_UP_BOX); up_button_.down_box(FL_THIN_DOWN_BOX);
   
   down_button_.callback((Fl_Callback *)sb_cb, this);
+  down_button_.align(FL_ALIGN_BOTTOM);
+  down_button_.box(FL_THIN_UP_BOX); down_button_.down_box(FL_THIN_DOWN_BOX);
+  
+  if(Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){ resize(X,Y,W,H); }
 }
 
 
diff -Naurp src3/fltk-1.3.3/src/Fl_Light_Button.cxx tmp3/fltk-1.3.3/src/Fl_Light_Button.cxx
--- src3/fltk-1.3.3/src/Fl_Light_Button.cxx	2012-12-07 11:29:49 -0500
+++ tmp3/fltk-1.3.3/src/Fl_Light_Button.cxx	2015-01-06 08:48:33 -0500
@@ -36,7 +36,8 @@ void Fl_Light_Button::draw() {
   int W;
   int dx, dy;
 
-  W  = labelsize();
+  if(down_box() && Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){ W = 15; } // for theme `oxy' - fixing size of box
+  else { W  = labelsize(); }
   dx = Fl::box_dx(box()) + 2;
   dy = (h() - W) / 2;
   // if (dy < 0) dy = 0;         // neg. offset o.k. for vertical centering
@@ -84,6 +85,8 @@ void Fl_Light_Button::draw() {
 	    fl_color(fl_color_average(FL_WHITE, FL_SELECTION_COLOR, 0.2f));
 	  } else fl_color(col);
 
+	  if(Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){ tW = 5; } // for theme `oxy' - fixing size of inline circle
+
 	  switch (tW) {
 	    // Larger circles draw fine...
 	    default :
diff -Naurp src3/fltk-1.3.3/src/Fl_Menu.cxx tmp3/fltk-1.3.3/src/Fl_Menu.cxx
--- src3/fltk-1.3.3/src/Fl_Menu.cxx	2014-06-28 08:29:51 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Menu.cxx	2015-01-06 08:52:50 -0500
@@ -28,6 +28,7 @@
 #include <FL/fl_draw.H>
 #include <stdio.h>
 #include "flstring.h"
+#include "fl_oxy.h"
 
 /** Size of the menu starting from this menu item */
 int Fl_Menu_Item::size() const {
@@ -147,6 +148,7 @@ int Fl_Menu_Item::measure(int* hp, const
 void Fl_Menu_Item::draw(int x, int y, int w, int h, const Fl_Menu_* m,
 			int selected) const {
   Fl_Label l;
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));            
   l.value   = text;
   l.image   = 0;
   l.deimage = 0;
@@ -158,7 +160,7 @@ void Fl_Menu_Item::draw(int x, int y, in
   Fl_Color color = m ? m->color() : FL_GRAY;
   if (selected) {
     Fl_Color r = m ? m->selection_color() : FL_SELECTION_COLOR;
-    Fl_Boxtype b = m && m->down_box() ? m->down_box() : FL_FLAT_BOX;
+    Fl_Boxtype b = flag_oxy?FL_UP_BOX:(m && m->down_box() ? m->down_box() : FL_FLAT_BOX);     
     if (fl_contrast(r,color)!=r) { // back compatibility boxtypes
       if (selected == 2) { // menu title
 	r = color;
@@ -183,6 +185,8 @@ void Fl_Menu_Item::draw(int x, int y, in
     int d = (h - FL_NORMAL_SIZE + 1) / 2;
     int W = h - 2 * d;
 
+    if(flag_oxy){ W = 15; d--; } // for theme `oxy' - fixing size of box     
+    
     if (flags & FL_MENU_RADIO) {
       fl_draw_box(FL_ROUND_DOWN_BOX, x+2, y+d, W, W, FL_BACKGROUND2_COLOR);
       if (value()) {
@@ -190,6 +194,7 @@ void Fl_Menu_Item::draw(int x, int y, in
 	if ((W - tW) & 1) tW++;	// Make sure difference is even to center
 	int td = (W - tW) / 2;
         if (Fl::scheme()) {
+         if(flag_oxy){ td = Fl::box_dx(FL_ROUND_DOWN_BOX) + 1; }
 	  if (!strcmp(Fl::scheme(), "gtk+")) {
 	    fl_color(FL_SELECTION_COLOR);
 	    tW --;
@@ -198,6 +203,7 @@ void Fl_Menu_Item::draw(int x, int y, in
 	  } else fl_color(labelcolor_);
 	} else fl_color(labelcolor_);
 
+	if(flag_oxy){ tW = 5; } // for theme `oxy' - fixing size of inline circle
 	switch (tW) {
 	  // Larger circles draw fine...
 	  default :
@@ -430,6 +436,7 @@ void menuwindow::autoscroll(int n) {
 
 void menuwindow::drawentry(const Fl_Menu_Item* m, int n, int eraseit) {
   if (!m) return; // this happens if -1 is selected item and redrawn
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
 
   int BW = Fl::box_dx(box());
   int xx = BW;
@@ -451,7 +458,12 @@ void menuwindow::drawentry(const Fl_Menu
     int sz = (hh-7)&-2;
     int y1 = yy+(hh-sz)/2;
     int x1 = xx+ww-sz-3;
-    fl_polygon(x1+2, y1, x1+2, y1+sz, x1+sz/2+2, y1+sz/2);
+   // draw arrows for the OXY theme
+   if (flag_oxy) {
+    x1+=(sz/2-BW*2-1);
+    y1=yy+hh/2-4; // 4 is half of arrow height
+    oxy_arrow(x1, y1, FL_ALIGN_RIGHT, active_r(), color(), (n==selected)?selection_color():FL_BLACK);
+   } else { fl_polygon(x1+2, y1, x1+2, y1+sz, x1+sz/2+2, y1+sz/2); }
   } else if (m->shortcut_) {
     Fl_Font f = m->labelsize_ || m->labelfont_ ? (Fl_Font)m->labelfont_ :
                     button ? button->textfont() : FL_HELVETICA;
diff -Naurp src3/fltk-1.3.3/src/Fl_Menu_Button.cxx tmp3/fltk-1.3.3/src/Fl_Menu_Button.cxx
--- src3/fltk-1.3.3/src/Fl_Menu_Button.cxx	2012-08-16 17:35:14 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Menu_Button.cxx	2015-01-06 09:02:35 -0500
@@ -19,6 +19,7 @@
 #include <FL/Fl.H>
 #include <FL/Fl_Menu_Button.H>
 #include <FL/fl_draw.H>
+#include "fl_oxy.h"
 
 
 static Fl_Menu_Button	*pressed_menu_button_ = 0;
@@ -33,10 +34,20 @@ void Fl_Menu_Button::draw() {
   draw_label(x()+Fl::box_dx(box()), y(), X-x()+2, h());
   if (Fl::focus() == this) draw_focus();
   // ** if (box() == FL_FLAT_BOX) return; // for XForms compatibility
-  fl_color(active_r() ? FL_DARK3 : fl_inactive(FL_DARK3));
-  fl_line(X+H/2, Y+H, X, Y, X+H, Y);
-  fl_color(active_r() ? FL_LIGHT3 : fl_inactive(FL_LIGHT3));
-  fl_line(X+H, Y, X+H/2, Y+H);
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  
+  if(flag_oxy){
+    int x1 = X;
+    int y1 = Y+3;
+    oxy_arrow(x1, y1, FL_ALIGN_BOTTOM, active_r(), color(), FL_BLACK);
+  }
+  
+  else {
+   fl_color(active_r() ? FL_DARK3 : fl_inactive(FL_DARK3));
+   fl_line(X+H/2, Y+H, X, Y, X+H, Y);
+   fl_color(active_r() ? FL_LIGHT3 : fl_inactive(FL_LIGHT3));
+   fl_line(X+H, Y, X+H/2, Y+H);
+  }
 }
 
 
diff -Naurp src3/fltk-1.3.3/src/Fl_Scrollbar.cxx tmp3/fltk-1.3.3/src/Fl_Scrollbar.cxx
--- src3/fltk-1.3.3/src/Fl_Scrollbar.cxx	2011-07-19 00:49:30 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Scrollbar.cxx	2015-01-06 09:04:02 -0500
@@ -22,6 +22,7 @@
 #include <FL/fl_draw.H>
 #include <math.h>
 #include "flstring.h"
+#include "fl_oxy.h"
 
 #define INITIALREPEAT .5
 #define REPEAT .05
@@ -222,6 +223,12 @@ void Fl_Scrollbar::draw() {
 	fl_polygon(x1, yy1+w1, x1+w1, yy1+2*w1, x1+w1-1, yy1+w1, x1+w1, yy1);
 	x1 += (W-H);
 	fl_polygon(x1, yy1, x1+1, yy1+w1, x1, yy1+2*w1, x1+w1, yy1+w1);
+      } else if(Fl::scheme_ && !strcasecmp(Fl::scheme_, "oxy")){
+       x1 = X+H/2+2;
+       int y1 = Y+H/2-3-2;
+       oxy_arrow(x1, y1, FL_ALIGN_LEFT, active_r(), color(), FL_BLACK); /// LEFT ARROW
+       x1 += (W-H)-4;
+       oxy_arrow(x1, y1, FL_ALIGN_RIGHT, active_r(), color(), FL_BLACK); /// RIGHT ARROW
       } else {
 	fl_polygon(x1, yy1+w1, x1+w1, yy1+2*w1, x1+w1, yy1);
 	x1 += (W-H);
@@ -248,6 +255,12 @@ void Fl_Scrollbar::draw() {
 	yy1 += H-W;
 	fl_polygon(x1, yy1, x1+w1, yy1+1, x1+w1, yy1+w1);
 	fl_polygon(x1+w1, yy1+1, x1+2*w1, yy1, x1+w1, yy1+w1);
+      } else if(Fl::scheme_ && !strcasecmp(Fl::scheme_, "oxy")){
+       x1 = X+W/2-4;
+       int y1 = Y+W/2+1;
+       oxy_arrow(x1, y1, FL_ALIGN_TOP, active_r(), color(), FL_BLACK); /// TOP ARROW
+      y1 += H-W-3;
+      oxy_arrow(x1, y1, FL_ALIGN_BOTTOM, active_r(), color(), FL_BLACK); /// BOTTOM ARROW
       } else {
 	fl_polygon(x1, yy1+w1, x1+2*w1, yy1+w1, x1+w1, yy1);
 	yy1 += H-W;
diff -Naurp src3/fltk-1.3.3/src/Fl_Tabs.cxx tmp3/fltk-1.3.3/src/Fl_Tabs.cxx
--- src3/fltk-1.3.3/src/Fl_Tabs.cxx	2014-03-24 14:24:59 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Tabs.cxx	2015-01-06 09:07:20 -0500
@@ -104,14 +104,22 @@ int Fl_Tabs::tab_height() {
   int H = h();
   int H2 = y();
   Fl_Widget*const* a = array();
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  int HT = 0, ls = 0;
   for (int i=children(); i--;) {
     Fl_Widget* o = *a++;
     if (o->y() < y()+H) H = o->y()-y();
     if (o->y()+o->h() > H2) H2 = o->y()+o->h();
+    if(flag_oxy && o->labelsize() > ls){
+     // HACK (kdiman) : for preven growing tab header height we are fixing it with biggest height of child labelsize + 10px
+     ls = o->labelsize();
+     fl_font(o->labelfont(), ls);
+     HT = fl_height()+10;
+    }
   }
   H2 = y()+h()-H2;
-  if (H2 > H) return (H2 <= 0) ? 0 : -H2;
-  else return (H <= 0) ? 0 : H;
+  if (H2 > H) return (H2 <= 0) ? 0 : (flag_oxy?-HT:-H2);
+  else return (H <= 0) ? 0 : (flag_oxy?HT:H);
 }
 
 /**
@@ -373,6 +381,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, i
   int dh = Fl::box_dh(box());
   int dy = Fl::box_dy(box());
   char prev_draw_shortcut = fl_draw_shortcut;
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
   fl_draw_shortcut = 1;
 
   Fl_Boxtype bt = (o==push_ &&!sel) ? fl_down(box()) : box();
@@ -388,7 +397,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, i
 
     H += dh;
 
-    Fl_Color c = sel ? selection_color() : o->selection_color();
+    Fl_Color c = sel ? selection_color() : (flag_oxy?fl_color_average(o->selection_color(), FL_BLACK, 0.90):o->selection_color());
 
     draw_box(bt, x1, y() + yofs, W, H + 10 - yofs, c);
 
@@ -402,7 +411,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, i
     // Restore the original label color...
     o->labelcolor(oc);
 
-    if (Fl::focus() == this && o->visible())
+    if (Fl::focus() == this && o->visible() && !flag_oxy)
       draw_focus(box(), x1, y(), W, H);
 
     fl_pop_clip();
@@ -414,7 +423,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, i
 
     H += dh;
 
-    Fl_Color c = sel ? selection_color() : o->selection_color();
+    Fl_Color c = sel ? selection_color() : (flag_oxy?fl_color_average(o->selection_color(), FL_BLACK, 0.90):o->selection_color());
 
     draw_box(bt, x1, y() + h() - H - 10, W, H + 10 - yofs, c);
 
@@ -428,7 +437,7 @@ void Fl_Tabs::draw_tab(int x1, int x2, i
     // Restore the original label color...
     o->labelcolor(oc);
 
-    if (Fl::focus() == this && o->visible())
+    if (Fl::focus() == this && o->visible() && !flag_oxy)       
       draw_focus(box(), x1, y() + h() - H, W, H);
 
     fl_pop_clip();
diff -Naurp src3/fltk-1.3.3/src/Fl_Tree.cxx tmp3/fltk-1.3.3/src/Fl_Tree.cxx
--- src3/fltk-1.3.3/src/Fl_Tree.cxx	2014-09-05 08:04:28 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Tree.cxx	2015-01-06 09:19:10 -0500
@@ -75,6 +75,7 @@ static int find_total_children(Fl_Tree_I
 
 /// Constructor.
 Fl_Tree::Fl_Tree(int X, int Y, int W, int H, const char *L) : Fl_Group(X,Y,W,H,L) { 
+  if (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")) _prefs.selectbox(FL_UP_BOX);
 #if FLTK_ABI_VERSION >= 10303
   _root = new Fl_Tree_Item(this);
 #else
@@ -790,11 +791,15 @@ void Fl_Tree::draw() {
       W += _prefs.openicon()->w();
     }
     // Draw entire tree, starting with root
-    fl_push_clip(_tix,_tiy,_tiw,_tih);
+    fl_push_clip(_tix,_tiy,_vscroll->visible()?_tiw-_vscroll->w():_tiw,_tih);
     {
       int xmax = 0;
       fl_font(_prefs.labelfont(), _prefs.labelsize());
-      _root->draw(X, Y, W, 				// descend into tree here to draw it
+      // HACK (kdiman) : If scheme was taken from enveronment (FLTK_SCHEME), then  needs to set style of selectbox. 
+      if (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){
+       if( _prefs.selectbox() != FL_UP_BOX){ _prefs.selectbox(FL_UP_BOX); }
+      }
+      _root->draw(X, Y, _vscroll->visible()?W-_vscroll->w():W, // descend into tree here to draw it
 		  (Fl::focus()==this)?_item_focus:0,	// show focus item ONLY if Fl_Tree has focus
 		  xmax, 1, 1);
     }
@@ -913,10 +918,14 @@ int Fl_Tree::draw_tree() {
       W += _prefs.openicon()->w();
     }
     int Ysave = Y;
-    fl_push_clip(cx,cy,cw,ch);
+    fl_push_clip(cx,cy,_vscroll->visible()?cw-_vscroll->w():cw,ch);    
     {
       fl_font(_prefs.labelfont(), _prefs.labelsize());
-      _root->draw(X, Y, W, this,
+      // HACK (kdiman) : If scheme was taken from enveronment (FLTK_SCHEME), then  needs to set style of selectbox. 
+      if (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy")){
+       if( _prefs.selectbox() != FL_UP_BOX){ _prefs.selectbox(FL_UP_BOX); }
+      }
+      _root->draw(X, Y, _vscroll->visible()?W-_vscroll->w():W, this,
 		  (Fl::focus()==this)?_item_focus:0,	// show focus item ONLY if Fl_Tree has focus
 		  _prefs);
     }
diff -Naurp src3/fltk-1.3.3/src/Fl_Tree_Item.cxx tmp3/fltk-1.3.3/src/Fl_Tree_Item.cxx
--- src3/fltk-1.3.3/src/Fl_Tree_Item.cxx	2014-09-04 22:59:00 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Tree_Item.cxx	2015-01-06 10:38:52 -0500
@@ -9,6 +9,7 @@
 #include <FL/Fl_Tree_Item.H>
 #include <FL/Fl_Tree_Prefs.H>
 #include <FL/Fl_Tree.H>
+#include "fl_oxy.h"
 
 //////////////////////
 // Fl_Tree_Item.cxx
@@ -1069,6 +1070,7 @@ void Fl_Tree_Item::draw(int X, int &Y, i
   int tree_bot = tree_top + tree()->_tih;
   int H = calc_item_height(prefs);	// height of item
   int H2 = H + prefs.linespacing();	// height of item with line spacing
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));            
 
   // Update the xywh of this item
   _xywh[0] = X;
@@ -1155,8 +1157,8 @@ void Fl_Tree_Item::draw(int X, int &Y, i
 	if ( render && prefs.connectorstyle() != FL_TREE_CONNECTOR_NONE ) {
 	  // Horiz connector between center of icon and text
 	  // if this is root, the connector should not dangle in thin air on the left
-	  if (is_root()) draw_horizontal_connector(hconn_x_center, hconn_x2, item_y_center, prefs);
-	  else           draw_horizontal_connector(hconn_x, hconn_x2, item_y_center, prefs);
+	  if (is_root()) draw_horizontal_connector(hconn_x_center, flag_oxy?hconn_x2-2:hconn_x2, item_y_center, prefs);
+      else           draw_horizontal_connector(hconn_x, flag_oxy?hconn_x2-2:hconn_x2, item_y_center, prefs);      
 	  // Small vertical line down to children
 	  if ( has_children() && is_open() )
 	    draw_vertical_connector(hconn_x_center, item_y_center, Y+H2, prefs);
@@ -1170,9 +1172,11 @@ void Fl_Tree_Item::draw(int X, int &Y, i
 	if ( render && has_children() && prefs.showcollapse() ) {
 	  // Draw icon image
 	  if ( is_open() ) {
-	    prefs.closeicon()->draw(icon_x,icon_y);
+	    if (flag_oxy) oxy_arrow(uicon_x-11, icon_y+3, FL_ALIGN_BOTTOM, is_active(), _labelbgcolor == 0xffffffff ? tree->color() : _labelbgcolor);
+        else prefs.closeicon()->draw(icon_x,icon_y);
 	  } else {
-	    prefs.openicon()->draw(icon_x,icon_y);
+	    if (flag_oxy) oxy_arrow(uicon_x-8, icon_y+2, FL_ALIGN_RIGHT, is_active(), _labelbgcolor == 0xffffffff ? tree->color() : _labelbgcolor);
+        else prefs.openicon()->draw(icon_x,icon_y);
 	  }
 	}
 	// Draw user icon (if any)
@@ -1256,6 +1260,7 @@ void Fl_Tree_Item::draw(int X, int &Y, i
   int tree_bot = tree_top + tree->h();
   int H = calc_item_height(prefs);	// height of item
   int H2 = H + prefs.linespacing();	// height of item with line spacing
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));            
 
   // Update the xywh of this item
   _xywh[0] = X;
@@ -1377,7 +1382,7 @@ void Fl_Tree_Item::draw(int X, int &Y, i
 	// Draw background for the item.. only if different from tree's bg color
 	if ( bg != tree->color() || is_selected() ) {
 	  if ( is_selected() ) {			// Selected? Use selectbox() style
-	    fl_draw_box(prefs.selectbox(),bg_x,bg_y,bg_w,bg_h,bg);
+	    fl_draw_box(prefs.selectbox(),bg_x,flag_oxy?bg_y+1:bg_y,bg_w,bg_h,bg);
 	  } else {					// Not Selected? use plain filled rectangle
 	    fl_color(bg);
 	    fl_rectf(bg_x,bg_y,bg_w,bg_h);
@@ -1388,11 +1393,11 @@ void Fl_Tree_Item::draw(int X, int &Y, i
 	if ( usericon() ) {
 	  // Item has user icon? Use it
 	  int uicon_y = item_y_center - (usericon()->h() >> 1);
-	  usericon()->draw(uicon_x,uicon_y);
+	  usericon()->draw(flag_oxy?uicon_x+4:uicon_x,uicon_y);
 	} else if ( prefs.usericon() ) {
 	  // Prefs has user icon? Use it
 	  int uicon_y = item_y_center - (prefs.usericon()->h() >> 1);
-	  prefs.usericon()->draw(uicon_x,uicon_y);
+	  prefs.usericon()->draw(flag_oxy?uicon_x+4:uicon_x,uicon_y);
 	}
 	// Draw label
 #if FLTK_ABI_VERSION >= 10301
@@ -1406,7 +1411,9 @@ void Fl_Tree_Item::draw(int X, int &Y, i
 	  fl_color(fg);
 	  fl_font(_labelfont, _labelsize);
 	  int label_y = Y+(H/2)+(_labelsize/2)-fl_descent()/2;
-	  fl_draw(_label, label_x, label_y);
+     fl_push_clip(bg_x+4, bg_y, bg_w-8, bg_h);
+     fl_draw(_label, label_x+1, label_y);
+     fl_pop_clip();
 	}
       }			// end non-child damage
       // Draw child FLTK widget?
@@ -1420,7 +1427,7 @@ void Fl_Tree_Item::draw(int X, int &Y, i
            Fl::visible_focus() && 
 	   Fl::focus() == tree &&
 	   prefs.selectmode() != FL_TREE_SELECT_NONE ) {
-	draw_item_focus(FL_NO_BOX,fg,bg,bg_x+1,bg_y+1,bg_w-1,bg_h-1);
+   draw_item_focus(flag_oxy?FL_UP_BOX:FL_NO_BOX,fg,bg,flag_oxy?bg_x:bg_x+1,bg_y+1,flag_oxy?bg_w+1:bg_w-1,flag_oxy?bg_h+1:bg_h-1);
       }
     }			// end drawthis
   }			// end clipped
diff -Naurp src3/fltk-1.3.3/src/Fl_Tree_Prefs.cxx tmp3/fltk-1.3.3/src/Fl_Tree_Prefs.cxx
--- src3/fltk-1.3.3/src/Fl_Tree_Prefs.cxx	2014-08-21 08:16:40 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Tree_Prefs.cxx	2015-01-06 09:28:51 -0500
@@ -166,6 +166,8 @@ Fl_Tree_Prefs::Fl_Tree_Prefs() {
       _selectbox = _FL_GTK_THIN_UP_BOX;
     } else if ( strcmp(Fl::scheme(), "plastic") == 0 ) {
       _selectbox = _FL_PLASTIC_THIN_UP_BOX;
+    }else if ( strcasecmp(Fl::scheme(), "oxy") == 0 ) {
+      _selectbox = _FL_OXY_THIN_UP_BOX;
     }
   }
 }
diff -Naurp src3/fltk-1.3.3/src/Fl_Widget.cxx tmp3/fltk-1.3.3/src/Fl_Widget.cxx
--- src3/fltk-1.3.3/src/Fl_Widget.cxx	2012-05-07 03:18:11 -0400
+++ tmp3/fltk-1.3.3/src/Fl_Widget.cxx	2015-01-06 09:29:41 -0500
@@ -177,12 +177,14 @@ Fl_Widget::~Fl_Widget() {
 void
 Fl_Widget::draw_focus(Fl_Boxtype B, int X, int Y, int W, int H) const {
   if (!Fl::visible_focus()) return;
+  bool flag_oxy = (Fl::scheme() && !strcasecmp(Fl::scheme(), "oxy"));
+  if(flag_oxy){ W++; }
   switch (B) {
     case FL_DOWN_BOX:
     case FL_DOWN_FRAME:
     case FL_THIN_DOWN_BOX:
     case FL_THIN_DOWN_FRAME:
-      X ++;
+      if (!flag_oxy){ X ++; }
       Y ++;
     default:
       break;
diff -Naurp src3/fltk-1.3.3/src/Fl_get_system_colors.cxx tmp3/fltk-1.3.3/src/Fl_get_system_colors.cxx
--- src3/fltk-1.3.3/src/Fl_get_system_colors.cxx	2014-04-19 10:55:15 -0400
+++ tmp3/fltk-1.3.3/src/Fl_get_system_colors.cxx	2015-01-06 09:31:18 -0500
@@ -27,6 +27,7 @@
 #include <FL/Fl_Pixmap.H>
 #include <FL/Fl_Tiled_Image.H>
 #include "tile.xpm"
+#include "fl_oxy.h"
 
 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
 // Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs
@@ -299,6 +300,7 @@ int Fl::scheme(const char *s) {
     else if (!fl_ascii_strcasecmp(s, "gtk+")) s = strdup("gtk+");
     else if (!fl_ascii_strcasecmp(s, "plastic")) s = strdup("plastic");
     else if (!fl_ascii_strcasecmp(s, "gleam")) s = strdup("gleam");
+    else if (!fl_ascii_strcasecmp(s, "oxy")) s = strdup("oxy");
     else s = 0;
   }
   if (scheme_) free((void*)scheme_);
@@ -406,6 +408,27 @@ int Fl::reload_scheme() {
 
     // Use slightly thinner scrollbars...
     Fl::scrollbar_size(15);
+  } else if (scheme_ && !strcasecmp(scheme_, "oxy")) {
+    // Oxy scheme
+    if (scheme_bg_) {
+      delete scheme_bg_;
+      scheme_bg_ = (Fl_Image *)0;
+    }
+
+    set_boxtype(FL_UP_FRAME,        FL_OXY_UP_FRAME);
+    set_boxtype(FL_DOWN_FRAME,      FL_OXY_DOWN_FRAME);
+    set_boxtype(FL_THIN_UP_FRAME,   FL_OXY_THIN_UP_FRAME);
+    set_boxtype(FL_THIN_DOWN_FRAME, FL_OXY_THIN_DOWN_FRAME);
+
+    set_boxtype(FL_UP_BOX,          FL_OXY_UP_BOX);
+    set_boxtype(FL_DOWN_BOX,        FL_OXY_DOWN_BOX);
+    set_boxtype(FL_THIN_UP_BOX,     FL_OXY_THIN_UP_BOX);
+    set_boxtype(FL_THIN_DOWN_BOX,   FL_OXY_THIN_DOWN_BOX);
+    set_boxtype(_FL_ROUND_UP_BOX,   FL_OXY_ROUND_UP_BOX);
+    set_boxtype(_FL_ROUND_DOWN_BOX, FL_OXY_ROUND_DOWN_BOX);
+
+    // Use slightly thinner scrollbars...
+    Fl::scrollbar_size(15);
   } else {
     // Use the standard FLTK look-n-feel...
     if (scheme_bg_) {
diff -Naurp src3/fltk-1.3.3/src/Makefile tmp3/fltk-1.3.3/src/Makefile
--- src3/fltk-1.3.3/src/Makefile	2014-10-30 12:05:22 -0400
+++ tmp3/fltk-1.3.3/src/Makefile	2015-01-06 09:32:06 -0500
@@ -145,6 +145,7 @@ CPPFILES = \
 	fl_oval_box.cxx \
 	fl_overlay.cxx \
 	fl_overlay_visual.cxx \
+	fl_oxy.cxx \
 	fl_plastic.cxx \
 	fl_read_image.cxx \
 	fl_rect.cxx \
diff -Naurp src3/fltk-1.3.3/src/fl_boxtype.cxx tmp3/fltk-1.3.3/src/fl_boxtype.cxx
--- src3/fltk-1.3.3/src/fl_boxtype.cxx	2014-08-23 05:27:30 -0400
+++ tmp3/fltk-1.3.3/src/fl_boxtype.cxx	2015-01-06 10:43:49 -0500
@@ -28,6 +28,7 @@
 #include <FL/Fl.H>
 #include <FL/Fl_Widget.H>
 #include <FL/fl_draw.H>
+#include "fl_oxy.h"
 #include <config.h>
 
 ////////////////////////////////////////////////////////////////
@@ -293,6 +294,26 @@ static struct {
   {fl_down_box,		1,1,2,2,0}, // _FL_GTK_THIN_ROUND_DOWN_BOX,
   {fl_up_box,		2,2,4,4,0}, // _FL_GTK_ROUND_UP_BOX,
   {fl_down_box,		2,2,4,4,0}, // _FL_GTK_ROUND_DOWN_BOX,
+  {fl_up_box,		2,2,3,3,0}, // _FL_GLEAM_UP_BOX,
+  {fl_down_box,		2,2,3,3,0}, // _FL_GLEAM_DOWN_BOX,
+  {fl_up_frame,		2,2,3,3,0}, // _FL_GLEAM_UP_FRAME,
+  {fl_down_frame,	2,2,3,3,0}, // _FL_GLEAM_DOWN_FRAME,
+  {fl_up_box,		1,1,1,1,0}, // _FL_GLEAM_THIN_UP_BOX,
+  {fl_down_box,		1,1,1,1,0}, // _FL_GLEAM_THIN_DOWN_BOX,
+  {fl_up_box,		2,2,3,3,0}, // _FL_GLEAM_ROUND_UP_BOX,
+  {fl_down_box,		2,2,3,3,0}, // _FL_GLEAM_ROUND_DOWN_BOX,
+  {oxy_up_box,        2,2,4,4,0}, // _FL_OXY_UP_BOX,
+  {oxy_down_box,      2,2,4,4,0}, // _FL_OXY_DOWN_BOX,
+  {oxy_up_frame,      2,2,4,4,0}, // _FL_OXY_UP_FRAME,
+  {oxy_down_frame,        2,2,4,4,0}, // _FL_OXY_DOWN_FRAME,
+  {oxy_thin_up_box,       1,1,2,2,0}, // _FL_OXY_THIN_UP_BOX,
+  {oxy_thin_down_box,     1,1,2,2,0}, // _FL_OXY_THIN_DOWN_BOX,
+  {oxy_thin_up_frame,     1,1,2,2,0}, // _FL_OXY_THIN_UP_FRAME,
+  {oxy_thin_down_frame,       1,1,2,2,0}, // _FL_OXY_THIN_DOWN_FRAME,
+  {oxy_round_up_box,      4,4,8,8,0}, // _FL_OXY_ROUND_UP_BOX,
+  {oxy_round_down_box,        4,4,8,8,0}, // _FL_OXY_ROUND_DOWN_BOX,
+  {oxy_button_up_box,     2,2,4,4,0}, // _FL_OXY_BUTTON_UP_BOX,
+  {oxy_button_down_box,       2,2,4,4,0}, // _FL_OXY_BUTTON_DOWN_BOX,
   {fl_up_box,		3,3,6,6,0}, // FL_FREE_BOX+0
   {fl_down_box,		3,3,6,6,0}, // FL_FREE_BOX+1
   {fl_up_box,		3,3,6,6,0}, // FL_FREE_BOX+2
diff -Naurp src3/fltk-1.3.3/src/fl_oxy.cxx tmp3/fltk-1.3.3/src/fl_oxy.cxx
--- src3/fltk-1.3.3/src/fl_oxy.cxx	1969-12-31 19:00:00 -0500
+++ tmp3/fltk-1.3.3/src/fl_oxy.cxx	2015-01-06 07:49:14 -0500
@@ -0,0 +1,455 @@
+//
+// "Oxy theme" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2011 by Dmitrij K. e-mail: kdiman at live dot ru
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fl_oxy_cxx
+#define fl_oxy_cxx
+
+#include <FL/Fl.H>
+#include <FL/fl_draw.H>
+#include "fl_oxy.h"
+
+
+#define GROFF 0.45f // gradients offset
+
+
+
+void oxy_arrow(int x1, int y1, Fl_Align a, bool ac, Fl_Color c, Fl_Color hc){
+ 
+ Fl_Color hlcol = 0x0;
+
+  switch(a){
+   case FL_ALIGN_TOP:{
+    
+    hlcol = fl_color_average(c, hc, 0.38);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    fl_line(x1, y1, x1+4, y1-4);
+    fl_line(x1+4, y1-4, x1+8, y1);
+    
+    hlcol = fl_color_average(c, hc, 0.58);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    y1++;
+    fl_line(x1+1, y1-1, x1+4, y1-4);
+    fl_line(x1+4, y1-4, x1+7, y1-1);
+    
+    hlcol = fl_color_average(c, hc, 0.78);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    y1-=2;
+    fl_line(x1, y1, x1+4, y1-4);
+    fl_line(x1+4, y1-4, x1+8, y1);
+    
+    break;
+   }
+   
+   case FL_ALIGN_BOTTOM:{
+    L_BOTTOM:
+    
+    hlcol = fl_color_average(c, hc, 0.38);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    fl_line(x1, y1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1+8, y1);
+    
+    hlcol = fl_color_average(c, hc, 0.58);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    y1--;
+    fl_line(x1+1, y1+1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1+7, y1+1);
+    
+    hlcol = fl_color_average(c, hc, 0.78);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    y1+=2;
+    fl_line(x1, y1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1+8, y1);
+    
+    break;
+   }
+   
+   case FL_ALIGN_LEFT:{
+    
+    hlcol = fl_color_average(c, hc, 0.38);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    fl_line(x1, y1, x1-4, y1+4);
+    fl_line(x1-4, y1+4, x1, y1+8);
+    
+    hlcol = fl_color_average(c, hc, 0.78);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    x1--;
+    fl_line(x1, y1, x1-4, y1+4);
+    fl_line(x1-4, y1+4, x1, y1+8);
+    
+    hlcol = fl_color_average(c, hc, 0.58);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    x1+=2;
+    fl_line(x1-1, y1+1, x1-4, y1+4);
+    fl_line(x1-4, y1+4, x1-1, y1+7);
+    
+    break;
+   }
+   
+   case FL_ALIGN_RIGHT:{
+    
+    hlcol = fl_color_average(c, hc, 0.38);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    fl_line(x1, y1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1, y1+8);
+    
+    hlcol = fl_color_average(c, hc, 0.58);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    x1--;
+    fl_line(x1+1, y1+1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1+1, y1+7);
+    
+    hlcol = fl_color_average(c, hc, 0.78);
+    fl_color(ac?hlcol:fl_inactive(hlcol));
+    x1+=2;
+    fl_line(x1, y1, x1+4, y1+4);
+    fl_line(x1+4, y1+4, x1, y1+8);
+    
+    break;
+   }
+   default: { goto L_BOTTOM; break; }
+  }
+ 
+}
+
+
+
+
+  // draw gradient from South to Nord
+  static void _oxy_up_box_(int x, int y, int w, int h, Fl_Color bg){
+   float groff = GROFF;
+   if(groff < 0.0){ groff = 0.0f; }
+   float gradoffset = groff;
+   float stepoffset = (1.0/(float)h);
+   int xw = x+w-1;
+//    from bottom to top
+   for (int _y = y; _y < y+h; _y++){
+    fl_color(fl_color_average(bg, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+  
+  
+  // draw gradient from Nord to South
+  static void _oxy_down_box_(int x, int y, int w, int h, Fl_Color bg){
+   float groff = GROFF;
+   if(groff < 0.0){ groff = 0.0f; }
+   float gradoffset = groff;
+   float stepoffset = (1.0/(float)h);
+   int xw = x+w-1;
+//    from top to bottom
+   for (int _y = y+h-1; _y >= y; _y--){
+    fl_color(fl_color_average(bg, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+
+  // draw gradient for button up box
+  static void _oxy_button_up_box_(int x, int y, int w, int h, Fl_Color bg){
+   int half_h = h/2;
+   float gradoffset = 0.15f;
+   float stepoffset = (1.0/(float)half_h);
+   Fl_Color c = fl_color_average(bg, FL_WHITE, 0.5);
+   int xw = x+w-1;
+   for(int _y = y; _y <= y+half_h; _y++){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+   gradoffset = 0.0f;
+   c = bg;
+   for(int _y = y+h-1; _y >= y+half_h-1; _y--){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+    
+  
+  // draw gradient for button down box
+  static void _oxy_button_down_box_(int x, int y, int w, int h, Fl_Color bg){
+   bg = fl_color_average(bg, FL_BLACK, 0.88);
+   int half_h = h/2, xw = x+w-1;
+   float gradoffset = 0.15f, stepoffset = (1.0/(float)half_h);
+   Fl_Color c = fl_color_average(bg, FL_WHITE, 0.5);
+   for(int _y = y; _y <= y+half_h; _y++){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+   gradoffset = 0.0f;
+   c = bg;
+   for(int _y = y+h-1; _y >= y+half_h-1; _y--){
+    fl_color(fl_color_average(c, FL_WHITE, (gradoffset<1.0)?gradoffset:1.0));
+    fl_line(x, _y, xw, _y);
+    gradoffset += stepoffset;
+   }
+  }
+  
+  
+  // draw rounded box
+  static void _oxy_rounded_box_(int x, int y, int w, int h, Fl_Color bg){
+   fl_color(bg);
+   if(w > h){
+    fl_pie(x, y, h, h, 90.0, 270.0); // right half of circle
+    fl_rectf(x+h/2, y, w-h, h); // rectangle between left and right half-circle
+    fl_pie(x+w-h, y, h, h, 0.0, 90.0); // top-left quarter of circle
+    fl_pie(x+w-h, y, h, h, 270.0, 360.0); // bottom-left quarter of circle
+   }
+   else {
+    fl_pie(x, y, w, w, 0.0, 180.0); // top half of circle
+    fl_rectf(x, y+w/2, w, h-w); // rectangle between top and bottom half-circle
+    fl_pie(x, y+h-w, w, w, 180.0, 360.0); // bottom half of circle
+   }
+  }
+
+
+enum {
+ OXY_UP_BOX,
+ OXY_DOWN_BOX,
+ 
+ OXY_UP_BUTTON,
+ OXY_DOWN_BUTTON,
+ 
+ OXY_UP_ROUND,
+ OXY_DOWN_ROUND,
+ 
+ OXY_UP_FRAME,
+ OXY_DOWN_FRAME
+};
+
+
+static Fl_Color oxy_color(Fl_Color c) {
+  if(Fl::draw_box_active()){ return c; }
+  else { return fl_inactive(c); }
+}
+
+
+
+static void oxy_draw(int x, int y, int w, int h, Fl_Color c, int typebox, bool is_shadow){
+ 
+ if(w < 1 || h < 1) return;
+ int X, Y, W, H, X1, Y1;
+ 
+ // draw bg
+ if(typebox != OXY_UP_FRAME && typebox != OXY_DOWN_FRAME){
+  
+  X = x+1; Y = y+1; W = w-2; H = h-2;
+  
+  switch(typebox){
+   case OXY_UP_BOX: { _oxy_up_box_(X, Y, W, H, oxy_color(c)); break; }
+   case OXY_DOWN_BOX: { _oxy_down_box_(X, Y, W, H, oxy_color(c)); break; }
+   case OXY_UP_BUTTON: { _oxy_button_up_box_(X, Y, W, H, oxy_color(c)); break; }
+   case OXY_DOWN_BUTTON: { _oxy_button_down_box_(X, Y, W, H, oxy_color(c)); break; }
+   case OXY_UP_ROUND:
+   case OXY_DOWN_ROUND:
+    _oxy_rounded_box_(x, y, w, h, oxy_color(fl_color_average(c, FL_WHITE, 0.82)));
+    break;
+   default: { break; }
+  }
+ }
+ 
+ Fl_Color leftline = c, topline = c, rightline = c, bottomline = c;
+ 
+ if(typebox == OXY_UP_ROUND || typebox == OXY_DOWN_ROUND){
+  leftline = fl_color_average(c, FL_WHITE, 0.88);
+  leftline = topline = rightline = bottomline = fl_color_average(leftline, FL_BLACK, 0.97);
+ }
+  
+ else if(typebox == OXY_UP_BOX || typebox == OXY_UP_FRAME){
+  topline = fl_color_average(c, FL_BLACK, 0.95);
+  leftline = fl_color_average(c, FL_BLACK, 0.85);
+  rightline = leftline;
+  bottomline = fl_color_average(c, FL_BLACK, 0.88);
+ }
+ 
+ else if(typebox == OXY_DOWN_BOX || typebox == OXY_DOWN_FRAME){
+  topline = fl_color_average(c, FL_BLACK, 0.88);
+  leftline = fl_color_average(c, FL_BLACK, 0.85);
+  rightline = leftline;
+  bottomline = fl_color_average(c, FL_BLACK, 0.95);
+ }
+
+ else if(typebox == OXY_UP_BUTTON || typebox == OXY_DOWN_BUTTON){
+  topline = leftline = rightline = bottomline = fl_color_average(c, FL_BLACK, 0.85);
+ }
+ 
+ // draw border
+ if(typebox != OXY_UP_ROUND && typebox != OXY_DOWN_ROUND){
+  // bottom side
+  fl_color(oxy_color(bottomline));
+  fl_line(x+1, y+h-1, x+w-2, y+h-1);
+  // right side
+  fl_color(oxy_color(rightline));
+  fl_line(x+w-1, y+1, x+w-1, y+h-2);
+  // top side
+  fl_color(oxy_color(topline));
+  fl_line(x+1, y, x+w-2, y);
+  // left side
+  fl_color(oxy_color(leftline));
+  fl_line(x, y+1, x, y+h-2);
+ }
+ 
+ // draw shadow
+ if(is_shadow){
+  
+  if(typebox == OXY_UP_ROUND){
+   topline = fl_color_average(c, FL_WHITE, 0.35);
+   bottomline = fl_color_average(c, FL_BLACK, 0.94);
+  }
+  
+  else if(typebox == OXY_DOWN_ROUND){
+   topline = fl_color_average(c, FL_BLACK, 0.94);
+   bottomline = fl_color_average(c, FL_WHITE, 0.35);
+  }
+  
+  else if(typebox == OXY_UP_BOX || typebox == OXY_UP_FRAME){
+   topline = fl_color_average(c, FL_WHITE, 0.35);
+   leftline = fl_color_average(c, FL_WHITE, 0.4);
+   rightline = leftline;
+   bottomline = fl_color_average(c, FL_BLACK, 0.8);
+  }
+  
+  else if(typebox == OXY_DOWN_BOX || typebox == OXY_DOWN_FRAME){
+   topline = fl_color_average(c, FL_BLACK, 0.8);
+   leftline = fl_color_average(c, FL_BLACK, 0.94);
+   rightline = leftline;
+   bottomline = fl_color_average(c, FL_WHITE, 0.35);
+  }
+  
+  int xw1=x+w-1;
+  int xw2=x+w-2;
+  int xw3=x+w-3;
+  int yh2=y+h-2;
+  int yh1=y+h-1;
+  
+  if(typebox == OXY_UP_BOX || typebox == OXY_UP_FRAME){
+   fl_color(oxy_color(topline));
+   X=x+1;Y=y+1;X1=xw2;Y1=y+1;
+   fl_line(X, Y, X1, Y1); // top line
+   
+   fl_color(oxy_color(leftline));
+   X=x+1;Y=yh2;X1=x+1;Y1=y+2;
+   fl_line(X, Y, X1, Y1); // left line
+   
+   fl_color(oxy_color(rightline));
+   X=xw2;Y=y+2;X1=xw2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // right line
+   
+   fl_color(oxy_color(bottomline));
+   X=xw2;Y=yh2;X1=x+1;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // bottom line
+  }
+  
+  else if(typebox == OXY_DOWN_BOX || typebox == OXY_DOWN_FRAME){
+   fl_color(oxy_color(topline));
+   X=x+1;Y=y+1;X1=xw2;Y1=y+1;
+   fl_line(X, Y, X1, Y1); // top line
+   
+   fl_color(oxy_color(leftline));
+   X=x+1;Y=yh2;X1=x+1;Y1=y+2;
+   fl_line(X, Y, X1, Y1); // left line
+   
+   fl_color(oxy_color(rightline));
+   X=xw2;Y=y+2;X1=xw2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // right line
+   
+   fl_color(oxy_color(bottomline));
+   X=xw3;Y=yh2;X1=x+2;Y1=yh2;
+   fl_line(X, Y, X1, Y1); // bottom line
+  }
+  
+  else if(typebox == OXY_UP_ROUND || typebox == OXY_DOWN_ROUND){
+   
+   int Radius, smooth;
+   int r_offset2; // quarter of smooth and half of smooth
+   
+   if(w > h){ smooth = w; }
+   else { smooth = h; }
+   
+    // correcting `smooth'
+   if(smooth > 0 && (smooth*3 > w || smooth*3 > h)){
+    if(h < w){ smooth = h/3; }
+    else { smooth = w/3; }
+   }
+   
+   r_offset2 = smooth/2;
+   
+   Radius = smooth*3;
+   if(Radius == 3){ Radius = 4; }
+   
+   fl_color(oxy_color(topline));
+   fl_line(x+1, yh1-smooth-r_offset2, x+1, y+r_offset2+smooth); // left side
+   fl_arc(x+1, y+1, Radius, Radius, 90.0, 180.0); // left-top corner
+   if(typebox == OXY_DOWN_ROUND){ fl_arc(x+1, y+1, Radius+1, Radius+1, 90.0, 180.0); } // left-top corner (DOWN_BOX)
+   fl_line(x+smooth+r_offset2, y+1, xw1-smooth-r_offset2, y+1); // top side
+   fl_arc(xw1-Radius, y+1, Radius, Radius, 00.0, 90.0); // right-top corner
+   if(typebox == OXY_DOWN_ROUND){ fl_arc(xw1-Radius, y+1, Radius+1, Radius+1, 00.0, 90.0); } // right-top corner (DOWN_BOX)
+   fl_line(xw2, y+smooth+r_offset2, xw2, yh1-smooth-r_offset2); // right side
+   fl_arc(x+1, yh1-Radius, Radius, Radius, 180.0, 200.0); // left-bottom corner
+   fl_arc(xw1-Radius, yh1-Radius, Radius, Radius, 340.0, 360.0); // right-bottom
+   fl_color(oxy_color(bottomline));
+   fl_arc(x+1, yh1-Radius, Radius, Radius, 200.0, 270.0); // left-bottom corner
+   if(typebox == OXY_UP_ROUND){ fl_arc(x+1, yh1-Radius, Radius+1, Radius+1, 200.0, 270.0); } // left-bottom corner (UP_BOX)
+   fl_line(xw1-smooth-r_offset2, yh2, x+smooth+r_offset2, yh2); // bottom side
+   fl_arc(xw1-Radius, yh1-Radius, Radius, Radius, 270.0, 340.0); // right-bottom corner
+   if(typebox == OXY_UP_ROUND){ fl_arc(xw1-Radius, yh1-Radius, Radius+1, Radius+1, 270.0, 340.0); } // right-bottom corner
+  }
+  
+ } /// end `if(is_shadow)'
+ 
+} /// end `static void oxy_draw(...)'
+
+
+
+void oxy_button_up_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_BUTTON, true); }
+void oxy_button_down_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_BUTTON, true); }
+void oxy_up_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_BOX, true); }
+void oxy_down_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_BOX, true); }
+void oxy_thin_up_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_BOX, false); }
+void oxy_thin_down_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_BOX, false); }
+void oxy_up_frame(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_FRAME, true); }
+void oxy_down_frame(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_FRAME, true); }
+void oxy_thin_up_frame(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_FRAME, false); }
+void oxy_thin_down_frame(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_FRAME, false); }
+void oxy_round_up_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_UP_ROUND, true); }
+void oxy_round_down_box(int x, int y, int w, int h, Fl_Color c){ oxy_draw(x, y, w, h, c, OXY_DOWN_ROUND, true); }
+
+
+
+extern void fl_internal_boxtype(Fl_Boxtype, Fl_Box_Draw_F*);
+
+Fl_Boxtype fl_define_FL_OXY_UP_BOX(){
+
+ fl_internal_boxtype(_FL_OXY_UP_BOX, oxy_up_box);
+ fl_internal_boxtype(_FL_OXY_DOWN_BOX, oxy_down_box);
+ fl_internal_boxtype(_FL_OXY_UP_FRAME, oxy_up_frame);
+ fl_internal_boxtype(_FL_OXY_DOWN_FRAME, oxy_down_frame);
+ fl_internal_boxtype(_FL_OXY_THIN_UP_BOX, oxy_thin_up_box);
+ fl_internal_boxtype(_FL_OXY_THIN_DOWN_BOX, oxy_thin_down_box);
+ fl_internal_boxtype(_FL_OXY_THIN_UP_FRAME, oxy_thin_up_frame);
+ fl_internal_boxtype(_FL_OXY_THIN_DOWN_FRAME, oxy_thin_down_frame);
+ fl_internal_boxtype(_FL_OXY_ROUND_UP_BOX, oxy_round_up_box);
+ fl_internal_boxtype(_FL_OXY_ROUND_DOWN_BOX, oxy_round_down_box);
+ fl_internal_boxtype(_FL_OXY_BUTTON_UP_BOX, oxy_button_up_box);
+ fl_internal_boxtype(_FL_OXY_BUTTON_DOWN_BOX, oxy_button_down_box);
+ 
+ return _FL_OXY_UP_BOX;
+ 
+}
+
+#endif
diff -Naurp src3/fltk-1.3.3/src/fl_oxy.h tmp3/fltk-1.3.3/src/fl_oxy.h
--- src3/fltk-1.3.3/src/fl_oxy.h	1969-12-31 19:00:00 -0500
+++ tmp3/fltk-1.3.3/src/fl_oxy.h	2015-01-06 07:49:14 -0500
@@ -0,0 +1,39 @@
+//
+// "Oxy theme" drawing routines for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2011 by Dmitrij K. e-mail: kdiman at live dot ru
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+
+#ifndef fl_oxy_h
+#define fl_oxy_h
+
+#include <FL/Fl.H>
+
+// to draw arrow, a - direction the arrow, ac - active widget?, c - color the arrow, hc - lighting the arrrow
+extern FL_EXPORT void oxy_arrow(int x1, int y1, Fl_Align a, bool ac, Fl_Color c, Fl_Color hc=FL_BLACK);
+
+// draw boxes
+extern FL_EXPORT void oxy_up_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_down_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_up_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_down_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_thin_up_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_thin_down_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_thin_up_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_thin_down_frame(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_round_up_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_round_down_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_button_up_box(int x, int y, int w, int h, Fl_Color c);
+extern FL_EXPORT void oxy_button_down_box(int x, int y, int w, int h, Fl_Color c);
+
+#endif
diff -Naurp src3/fltk-1.3.3/test/demo.cxx tmp3/fltk-1.3.3/test/demo.cxx
--- src3/fltk-1.3.3/test/demo.cxx	2014-02-26 16:21:14 -0500
+++ tmp3/fltk-1.3.3/test/demo.cxx	2015-01-06 10:03:01 -0500
@@ -73,13 +73,15 @@ void create_the_forms() {
   choice->add("none");
   choice->add("gtk+");
   choice->add("gleam");
+  choice->add("oxy");
   choice->add("plastic");
   choice->callback((Fl_Callback *)doscheme);
   Fl::scheme(NULL);
   if (!Fl::scheme()) choice->value(0);
   else if (!strcmp(Fl::scheme(), "gtk+")) choice->value(1);
   else if (!strcmp(Fl::scheme(), "gleam")) choice->value(2);
-  else if (!strcmp(Fl::scheme(), "plastic")) choice->value(3);
+  else if (!strcmp(Fl::scheme(), "oxy")) choice->value(3);
+  else if (!strcmp(Fl::scheme(), "plastic")) choice->value(4);
   else choice->value(0);
   obj = new Fl_Button(10,15,330,380); obj->type(FL_HIDDEN_BUTTON);
   obj->callback(doback);
